• Лови промокод з яким знижка 50 грн - promo50grn

перепаковка множества мелких архивов: нужен совет

Статус: Offline
Реєстрація: 16.12.2007
Повідом.: 86
перепаковка множества мелких архивов: нужен совет

дано: куча файлов (1000+), хранящихся в сложной структуре папок. некоторые файлы заархивированы rar
нужно: найти все раровские архивы, содержимое каждого перепаковать в zip и положить вместо rar. остальные файлы и структуру папок не трогать.
вопрос: как автоматизировать? желательно без программинга.
ос - windows.
 
imho, без программинга не обойтись: как минимум придется писать скрипт на WSH.
 
у как вариант есть : посадить студенточку на это задание :)
 
это простой командник в несколько строк
команда for вам в помощь

что -то типа такого
FOR /F "tokens=1" %%A IN ('dir /b/s /a-D %1\*.rar') DO call repack.cmd

%1 - стартовый катаолог

repack.cmd - утилитка (тоже командник) которая распакует содержимое
запакует в новое и грохнет
 
Останнє редагування:
Написание скрипта не есть программирование?
 
А можно вопрос задать, с которого начинается любое инженерное изыскание: "А зачем это?" ?
 
А можно вопрос задать, с которого начинается любое инженерное изыскание: "А зачем это?" ?

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

что -то типа такого
FOR /F "tokens=1" %%A IN ('dir /b/s /a-D %1\*.rar') DO call repack.cmd

а как в repack.cmd передать имя текущего файла?
 
FOR /F "tokens=1" %%A IN ('dir /b/s /a-D %1\*.rar') DO call repack.cmd %%A

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

получился такой скрипт
Код:
cd c:\_tmp
FOR /F "tokens=1" %%A IN ('dir /b/s /a-D %1\*.rar') DO ( 
c:\arx\unrar e %%A c:\_tmp
del %%A
c:\arx\pkzip %%~NA c:\_tmp\*.*
copy c:\_tmp\*.zip %%~DPA
del c:\_tmp\*.*
)

он работает, но не понимает длинных имен
видимо это тупик. увы.
 
Останнє редагування:
Назад
Зверху Знизу