Показать полную графическую версию : Переименование дубликатов файлов при распаковке из архивов в одну папку
Мне бы хотелось поиметь решение одной задачки:
Есть zip-архивы, в каждом из которых по несколько файлов, и в том числе файл readme.txt.
Все эти архивы распаковываются в одну большую папку (то есть все файлы из всех архивов сваливаются в кучу), с заменой более старых файлов (или всех файлов - это непринципиально). То есть архивы скачиваются из Интернета, и из них регулярно обновляется общая папка.
Необходимо, чтобы файл readme.txt из каждого архива распаковывался в эту общую папку под именем имя архива_readme.txt или можно ещё короче: имя архива.txt
То есть нужно, чтобы readme при этой тотальной распаковке не затирались друг другом и чтобы понятно было в то же время, к какому архиву относился прежде каждый readme.
Имена остальных файлов трогать не нужно, т. к. совпадающих имен больше нет.
Можно ли написать такую утилитку, или, может, найдется архиватор, который такое умеет?
Delirium
29-09-2010, 13:39
truvo, мне кажется, что с подобным надо в отдел BAT файлов. ПоО моему, можно сделать так, чтобы из командной строки архив распаковывался в папку, и переименовывался текстовик по имени стартовой папки. Если запускать разархивацию не параллельно, а последовательно, то все будет работать.
Delirium, вы как всесильный модератор можете перенести куда надо?
Можно ли написать такую утилитку, или, может, найдется архиватор, который такое умеет? »думаю, такое можно с любым архиватором осуществить...
например, RAR'ом можно перед распаковкой переименовать файлы readme.txt прямо в архивах:
for %%i in (*.rar) do rar rn "%%i" readme.txt "%%~ni_readme.txt"
Надобы найти бесплатный разархиватор ZIP`ов, ибо RAR все же надо покупать... (я на сайте pkware не нашел :o )
@Echo off
setLocal EnableExtensions
set total=0
set proceed=0
for %%F in (*.zip) do call :unpack "%%F"
echo Found %total% archives, unpacked %proceed%
goto End
:unpack
del /f "%~n1.txt" 2>nul
set /a total+=1
rem Здесь должна быть команда распаковки архива %1
"%ProgramFiles%\WinRar\winrar.exe" e -o+ %1
if %ErrorLevel%==0 set /a proceed+=1
ren readme.txt "%~n1.txt"
exit /b
:End
amel27, изменил ваш текст наfor %%i in (*.zip) do "%ProgramFiles%\WinRar\winrar.exe" rn "%%i" readme.txt "%%~ni_readme.txt"
Работает. Это уже почти выход, спасибо.
NiOl, пока недопонял. В вашем способе - тот же результат, что у amel27, или вы пошли дальше?
Надобы найти бесплатный разархиватор ZIP`ов, ибо RAR все же надо покупать... (я на сайте pkware не нашел ) »
7-Zip7z e archive.zip
извлекает все файлы из архива archive.zip в текущий каталог.
7z e archive.zip -oc:\soft
извлекает все файлы из архива archive.zip в папку c:\soft.
Delirium
01-10-2010, 01:01
Господа, вы о чем вообще говорите. WinRar, во первых, это условно-бесплатная программа, т.е. ей можно пользоваться и не покупая, просто окно Winrar будет надоедать. А вот утилитка RAR.exe из состава Winrar - бесплатна, и ей можно спокойно пользоваться, не нарушая лицензионных прав.
Ну либо пользоваться 7-zip.
WinRar, во первых, это условно-бесплатная программа, т.е. ей можно пользоваться и не покупая, просто окно Winrar будет надоедать. А вот утилитка RAR.exe из состава Winrar - бесплатна, и ей можно спокойно пользоваться, не нарушая лицензионных прав. »
скажем, freeware она точно не является:
WinRAR – это shareware-продукт, который даёт возможность бесплатно попробовать продукт перед покупкой в течение 40 дней.RAR.EXE хоть и работает без проблем, но также выдаёт предупреждение о незарегистрированной версии
на 7z будет где-то так (d1-каталог с архивами, d2-куда распаковывать):
@set d1=C:\7Z
@set d2=C:\TO
@for %%i in ("%d1%\*.7z") do @(
@7za e "%%i" -aoa -o"%d2%"
@ren "%d2%\readme.txt" "%%~ni_readme.txt" 2>nul
)
Павел_Будков@vk
09-09-2014, 20:52
Здравствуйте.
Чтобы не плодить тем, апну эту =)
Подскажите как можно сделать нечто похожее, что в теме, но у меня много архивов и в каждом архиве всего один файл с расширением .smc но имена у файлов в архиве разные, мне нужно распаковать их так, чтобы все файлы переименовывались в "имя архива.smc" т.е. распаковываемые файла принимали имя своего архива, но расширение оставалось smc.
Заранее спасибо.
Чтобы не плодить тем, апну эту »
Напрасно. Ваша тема к данной имеет весьма опосредованное отношение.
но у меня много архивов »
Типы архивов какие?
в каждом архиве всего один файл с расширением .smc »
Ещё что-либо в архиве есть, кроме этого файла?
Павел_Будков@vk
10-09-2014, 00:38
Ну почему же, по сути все тоже.
Покурил инструкции к архиватору и благодаря посту в этой теме сделал так for %%i in (*.zip) do "%ProgramFiles%\WinRar\winrar.exe" rn "%%i" "*.smc" "%%~ni.smc"
Все переименовалось как надо и прямо в архивах.
Спасибо всем за посты в данной теме, очень помогло!
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.