![]() |
Создание TXT файла для каждого файла в каталоге ISO и заполнение его по шаблону
Привет. Помогите пожалуйста со следующей задачей.
Есть папка ISO, в ней следующие файлы: Dead to Rights Reckoning [2006].iso 90,6 Мб Ultimate Board Game Collection [2007].cso 65,9 Мб Worms - Open Warfare [2006].iso 67,0 Мб Super Stardust Portable [2008].iso 83,3 Мб Star Trek - Tactical Assault [2006].cso 114,2 Мб Необходимо создать скрипт который делает следующее: 1. Сканирует файлы в папке ISO 2. Для каждого найденного файла создает файл формата TXT с его именем и со следующем содержанием: (Объясняю на примере первого файла, указанное в скобках меняется) [Info] EID=gdp# Desc= (Dead to Rights Reckoning [2006] - имя без расширения) Size=(92866 - размер файла в килобайтах) Code=../../ISO Fname=(Dead to Rights Reckoning [2006].iso - имя с расширением) [File] C=http://192.168.1.10/ISO/(Dead%20to%20Rights%20Reckoning%20[2006].iso - имя с %20 вместо пробелов) Итого в начале есть файл Dead to Rights Reckoning [2006].iso размером 90,6 Мб в папке ISO В результате работы скрипта должен появится файл Dead to Rights Reckoning [2006].txt со следующим содержанием: [Info] EID=gdp# Desc=Dead to Rights Reckoning [2006] Size=92866 Code=../../ISO Fname=Dead to Rights Reckoning [2006].iso [File] C=http://192.168.1.10/ISO/Dead%20to%20Rights%20Reckoning%20[2006].iso Заранее спасибо. Уже больше недели пытаюсь решить эту задачу самостоятельно. |
Код:
@Echo Off |
а для чего строка
Цитата:
с этой строкой файлы размером менее 1 mb отображают размер = 0 |
|
gora, огромное спасибо.
Скрипт отлично работает. |
Привет всем, еще раз.
Помогите пожалуйста модифицировать предыдущий скрипт от gora. Задача немного усложнилась, но идея приблизительно похожая. Задача следующая. Есть папка PSX, в ней подпапка PSX-PSP.PSN.Collection, и в ней подпапки (на примере трех): [PSX-PSP] 2Xtreme (english) [SCUS-94508] [PSX-PSP] A Bug's Life (english) [SCES-01489] [PSX-PSP] Alundra (english) [SLUS-00553] ... В каждой подпапке (первого уровня), вторая подпапка с кодом (который присутствует в имени первой подпапки): SCUS94508 SCES01489 SLUS00553 ... В каждой подпапке (второго уровня) с кодом, три файла (имена файлов не меняются): KEYS.BIN (размер меньше 1Кб) DOCUMENT.DAT (размер 1 - 10Мб) EBOOT.PBP (размер 20 - 2000Мб) Общая структура выглядит следующим образом (на примере трех папок): PSX (главная папка) + PSX-PSP.PSN.Collection (подпапка нулевого уровня) + [PSX-PSP] 2Xtreme (english) [SCUS-94508] (подпапка первого уровня) + SCUS94508 (подпапка второго уровня) - KEYS.BIN (файл) - DOCUMENT.DAT (файл) - EBOOT.PBP (файл) + [PSX-PSP] A Bug's Life (english) [SCES-01489] (подпапка первого уровня) + SCES01489 (подпапка второго уровня) - KEYS.BIN (файл) - DOCUMENT.DAT (файл) - EBOOT.PBP (файл) + [PSX-PSP] Alundra (english) [SLUS-00553] (подпапка первого уровня) + SLUS00553 (подпапка второго уровня) - KEYS.BIN (файл) - DOCUMENT.DAT (файл) - EBOOT.PBP (файл) Необходимо переделать скрипт, что бы он выполнял следующее: 1. Сканировал все подпапки в подпапке нулекого уровня PSX-PSP.PSN.Collection 2. Для каждой подпапки в папке PSX-PSP.PSN.Collection создавал два текстовые файла с именем подпапки второго уровня с расширением XPD, (SCUS94508 и добавлением _1 и _2 к имени, SCUS94508_1.xpd и SCUS94508_2.xpd) следующего содержания: первый файл SCUS94508_1.xpd (в скобках информация которая меняется) [Info] EID=gdp# Desc=[PSX-PSP] 2Xtreme (english) [SCUS-94508] Part 1 (имя подпапки первого уровня [PSX-PSP] 2Xtreme (english) [SCUS-94508] + неизменное Part 1) Size=58067 (размер файла EBOOT.PBP в подпапке второго уровня SCUS94508 в килобайтах) Code=SCUS94508 (имя подпапки второго уровня SCUS94508 без дефиса) NPage=javascript:alert("Please wait for Part 2 to begin downloading.");window.location="http://192.168.1.10/PSX/XPD/SCUS94508_P2.xpd" (имя второго файла SCUS94508_P2.xpd) [File] C=http://192.168.1.10/PSX/PSX-PSP.PSN.Collection/[PSX-PSP]%202Xtreme%20(english)%20[SCUS-94508]/SCUS94508/EBOOT.PBP (подпапка первого уровня/второго уровня/файл EBOOT.PBP, вместо пробела %20) A=http://192.168.1.10/PSX/PSX-PSP.PSN.Collection/[PSX-PSP]%202Xtreme%20(english)%20[SCUS-94508]/SCUS94508/DOCUMENT.DAT (подпапка первого уровня/второго уровня/файл DOCUMENT.DAT, вместо пробела %20) второй файл SCUS94508_2.xpd (в скобках информация которая меняется) [Info] EID=gdp# Desc=[PSX-PSP] 2Xtreme (english) [SCUS-94508] Part 2 (имя подпапки первого уровня [PSX-PSP] 2Xtreme (english) [SCUS-94508] + неизменное Part 2) Size=1 (размер файла KEYS.BIN меньше 1Кб, так что можно просто оставить 1) Code=SCUS94508 (имя подпапки второго уровня SCUS94508 без дефиса) [File] C=http://192.168.1.10/PSX/PSX-PSP.PSN.Collection/[PSX-PSP]%202Xtreme%20(english)%20[SCUS-94508]/SCUS94508/KEYS.BIN (подпапка первого уровня/второго уровня/файл KEYS.BIN, вместо пробела %20) 3. Полученные текстовые файлы SCUS94508_P1.xpd и SCUS94508_P2.xpd необходимо положить в папку PSX/XPD/ с расширением *.xpd Пример: 1. Есть три файла ./PSX/PSX-PSP.PSN.Collection/[PSX-PSP] 2Xtreme (english) [SCUS-94508]/SCUS94508/KEYS.BIN 1,9Мб ./PSX/PSX-PSP.PSN.Collection/[PSX-PSP] 2Xtreme (english) [SCUS-94508]/SCUS94508/DOCUMENT.DAT 59Мб ./PSX/PSX-PSP.PSN.Collection/[PSX-PSP] 2Xtreme (english) [SCUS-94508]/SCUS94508/EBOOT.PBP 0,1Мб 2. После запуска скрипта в папке ./PSX/XPD/ создается два текстовых файла в расширением XPD, SCUS94508_P1.xpd и SCUS94508_P2.xpd 3. Содержимое файла SCUS94508_P1.xpd [Info] EID=gdp# Desc=[PSX-PSP] 2Xtreme (english) [SCUS-94508] Part 1 Size=58067 Code=SCUS94508 NPage=javascript:alert("Please wait for Part 2 to begin downloading.");window.location="http://192.168.1.10/PSX/XPD/SCUS94508_P2.xpd" [File] C=http://192.168.1.10/PSX/PSX-PSP.PSN.Collection/[PSX-PSP]%202Xtreme%20(english)%20[SCUS-94508]/SCUS94508/EBOOT.PBP A=http://192.168.1.10/PSX/PSX-PSP.PSN.Collection/[PSX-PSP]%202Xtreme%20(english)%20[SCUS-94508]/SCUS94508/DOCUMENT.DAT 4. Содержимое файла SCUS94508_P2.xpd [Info] EID=gdp# Desc=[PSX-PSP] 2Xtreme (english) [SCUS-94508] Part 2 Size=1 Code=SCUS94508 [File] C=http://192.168.1.10/PSX/PSX-PSP.PSN.Collection/[PSX-PSP]%202Xtreme%20(english)%20[SCUS-94508]/SCUS94508/KEYS.BIN Спасибо, всем кто сможет мне помочь. Бьюсь над этой задачей спустя несколько часов после вашей помощи в решении предыдущей. |
Структура каталога PSX с файлами нулевого размера: https://dl.dropbox.com/u/9572883/PSX_Zero.zip
Пример созданных вручную XPD файлов для первых двух папок https://dl.dropbox.com/u/9572883/XPD_Template.zip |
Код:
@Echo Off |
gora, это одна строка. Простите, буду внимательнее.
Содержимое файла SCUS94508_P1.xpd Код:
[Info] Код:
[Info] Код:
@Echo Off Код:
Непредвиденное появление: window.location. |
Цитата:
Это как раз из-за той непонятной двойной строки. Сначала я ее сделал в две строки вывода, потом увидел у Вас в ручных файлах, что строка таки одна и я ее объединил уже в посте без проверки, а в ней оказались парные круглые скобки без экранирования... :( PS Не забудьте в строке Код:
Set base=e:\Temp\ |
gora, с Set base=e:\Temp\ в первую очередь разобрался.
Исправленный скрипт теперь отлично работает. Спасибо вам еще раз огромное. |
@Echo Off
SetLocal EnableDelayedExpansion Set folder=E:\Temp 1\ISO For %%a In ("%folder%\*.*") Do ( Set ta=%%~nxa Set sa=%%~za Set /A sa/=1024 (Echo [Info] Echo EID=gdp# Echo Desc=%%~na Echo Size=!sa! Echo Code=../../ISO Echo Fname=%%~nxa Echo [File] Echo C=http://192.168.1.10/ISO/!ta: =%%20!)>"%folder%\%%~na.txt" ) Привет всем! может кто помочь? Вопрос такой что в коде изменить чтобы он работал на весь диск а не на конкретную папку? Просто у меня есть много архивов RAR в разных папках на дисках D и E хочу к ним этот код применить, но чот не могу разобраться( помогите пожалуйста. Заранее очень благодарен! а и еще забыл) что дописать туда чтобы в конечном файле txt показывалась строчка атрибут файла (для чтения, архивный, скрытый и т.д. ...)? тоесть с каким атрибутом был файл. |
форум еще живет? есть тут кто?)
|
serezhapotapenko1980, начните со словесного описания того, что Вам нужно.
|
@Echo Off
SetLocal EnableDelayedExpansion Set folder=E:\Temp 1\ISO For %%a In ("%folder%\*.*") Do ( Set ta=%%~nxa Set sa=%%~za Set /A sa/=1024 (Echo [Info] Echo EID=gdp# Echo Desc=%%~na Echo Size=!sa! Echo Code=../../ISO Echo Fname=%%~nxa Echo [File] Echo C=http://192.168.1.10/ISO/!ta: =%%20!)>"%folder%\%%~na.txt" ) Привет всем! может кто помочь? Вопрос такой что в коде изменить чтобы он работал на весь диск а не на конкретную папку? Просто у меня есть много архивов RAR в разных папках на дисках D и E хочу к ним этот код применить, но чот не могу разобраться( помогите пожалуйста. Заранее очень благодарен! а и еще забыл) что дописать туда чтобы в конечном файле txt показывалась строчка атрибут файла (для чтения, архивный, скрытый и т.д. ...)? тоесть с каким атрибутом был файл. |
serezhapotapenko1980, копипаст с предыдущего сообщения Вы освоили. Но этого недостаточно.
|
код создает txt файл с разными параметрами файлов в конкретной папке.
а я хотел применить этот код к архивам rar но они расположены в разных папках по всему диску, как это реализовать? |
нереально такое сделать как я описал?
|
допустим
Код:
@echo off |
Цитата:
|
Цитата:
|
Код:
@echo off |
Цитата:
вот этот код работал как надо но только не захватывал файлы из корня диска а только из папок и подпапок. @echo off for /f "delims=" %%A in ('dir /ad/b/s "D:\*" "E:\*"') do ( pushd "%%A" for /f "delims=" %%a in ('dir /a-d/b "*.rar"') do ( echo %%~dpa echo %%~na echo %%~xa echo %%~za echo %%~aa>D:\File\%%~na.txt ) popd ) pause |
Код:
@echo off |
Время: 16:40. |
Время: 16:40.
© OSzone.net 2001-2025