CMD/BAT - обрабовать группу файлов в архиве

Ответить
Аватара пользователя
murka_anka

CMD/BAT - обрабовать группу файлов в архиве

Сообщение murka_anka »

здравствуйте, задача такая: есть списов файлов в txt, каждый из этих файлов находится в архиве, нужно последовательно (каждый по отдельности, а не все сразу, тк имена файлов могут быть одинаковые) распаковать, обработать какой-нибудь программой, например trid.exe, вместо нее может быть любая другая, записать результаты по каждому файлу в отдельный файл, затем распакованный файл удалить.

Вот что у меня есть





PHP код:

Код: Выделить всё

rem куда распаковывыем

set spath=d:1rar

rem куда кладем файлы с результатами

set dpath=d:1trid

rem считаем строки в файле с путями к файлам

set /a j=0

for /F "tokens=*" %%j in (list.txt) do (set /a j=j+1)

rem х - номер строки и имя файла с результатами

for /l %%x in (1,1,%j%) do (

FOR /F "usebackq delims=" %%n in (list.txt) do (

winrar.exe e -n %%n %spath%|

for /r %spath% %%m in (*.*) do (

trid.exe> %dpath%%%x.trid "%%m")|

del /q "%%m"))

cd /d %dpath%

"C:\Program Files\WinRAR\winrar.exe" a %dpath%trid.zip 






Вообщем, что у меня получается, вернее, не получается:

1) Файл не удаляется, пишет "не удается найти d:\1\rar\%m. Попытка записи в несуществующий канал"

2) Результаты обработки записываются в один файл 1.trid, не во много файлов 1-j.

(У меня вся программа в одной строке, это я здесь переосы расставила)

Извините, если сумбурно написала, но уже голова кипит)
Аватара пользователя
murka_anka

Re: CMD/BAT - обрабовать группу файлов в архиве

Сообщение murka_anka »

заменила del на erase, файлы теперь удаляются, но экзешник не отрабатыват, то есть все также создается один файл, но пустой.

ПРОбовала запустить отдельно строчку



PHP код:

Код: Выделить всё

for /r %spath% %%m in (*.*) do ( trid.exe> %dpath%%%x.trid "%%m")| erase /q "%%m") 






файл удаляется, *.trid создается, но пустой.

Мне нужно, чтобы по порядку каждому j сопоставлялся последовательно каждый n. А получается, что для каждого j цикл перебирает все n и только потом переходит в следующему j.

Помогите, пожалуйста, я еще совсем новичок, это мой второй скрипт))



да, экзешник не отрабатывает с ошибкой "Файл не найден", возможно он удаляется раньше, чем запускается экзешник? Изображение
Аватара пользователя
murka_anka

Re: CMD/BAT - обрабовать группу файлов в архиве

Сообщение murka_anka »

еще добавлю, первоначально написала другой алгоритм, сначала все распаковываем, потом все новые пути к файлам записываем в файл, и уже через for для каждой строки в файле запускаем экзешник. Так все работало, пока непоявились файлы с одинаковыми именами.
Аватара пользователя
murka_anka

Re: CMD/BAT - обрабовать группу файлов в архиве

Сообщение murka_anka »

всем спасибо, справилась сама) идею взяла отсюда
CMD/BAT - [решено] Переименовать файлы в папке


выкладываю код, может кому-то пригодится обрабатывать файлы в архиве и записывать результат по каждому файлу в отдельный файл.



PHP код:

Код: Выделить всё

setlocal enableextensions enabledelayedexpansion 

set spath=d:exifrar585 

set dpath=d:exifrarrar

FOR /F "delims=*" %%n in (list_rar.txt) do ( 

set /a lcount+=1     

winrar.exe e -n %%n %spath%         

for /r %spath% %%m in (*.*) do (         

trid.exe>%dpath%!lcount!.trid "%%m"         

ping -n 3 127.0.0.1  1>nul|del /q "%%m")) 

cd /d %dpath% 

"C:\Program Files\WinRAR\winrar.exe" a %dpath%trid.zip 

endlocal 



Ответить

Вернуться в «Скриптовые языки администрирования Windows»