Войти

Показать полную графическую версию : Переименование дубликатов файлов при распаковке из архивов в одну папку


truvo
29-09-2010, 01:58
Мне бы хотелось поиметь решение одной задачки:

Есть zip-архивы, в каждом из которых по несколько файлов, и в том числе файл readme.txt.

Все эти архивы распаковываются в одну большую папку (то есть все файлы из всех архивов сваливаются в кучу), с заменой более старых файлов (или всех файлов - это непринципиально). То есть архивы скачиваются из Интернета, и из них регулярно обновляется общая папка.

Необходимо, чтобы файл readme.txt из каждого архива распаковывался в эту общую папку под именем имя архива_readme.txt или можно ещё короче: имя архива.txt

То есть нужно, чтобы readme при этой тотальной распаковке не затирались друг другом и чтобы понятно было в то же время, к какому архиву относился прежде каждый readme.

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

Можно ли написать такую утилитку, или, может, найдется архиватор, который такое умеет?

Delirium
29-09-2010, 13:39
truvo, мне кажется, что с подобным надо в отдел BAT файлов. ПоО моему, можно сделать так, чтобы из командной строки архив распаковывался в папку, и переименовывался текстовик по имени стартовой папки. Если запускать разархивацию не параллельно, а последовательно, то все будет работать.

truvo
29-09-2010, 20:22
Delirium, вы как всесильный модератор можете перенести куда надо?

amel27
30-09-2010, 12:32
Можно ли написать такую утилитку, или, может, найдется архиватор, который такое умеет? »думаю, такое можно с любым архиватором осуществить...
например, RAR'ом можно перед распаковкой переименовать файлы readme.txt прямо в архивах:
for %%i in (*.rar) do rar rn "%%i" readme.txt "%%~ni_readme.txt"

NiOl
30-09-2010, 13:56
Надобы найти бесплатный разархиватор 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

truvo
30-09-2010, 18:51
amel27, изменил ваш текст наfor %%i in (*.zip) do "%ProgramFiles%\WinRar\winrar.exe" rn "%%i" readme.txt "%%~ni_readme.txt"
Работает. Это уже почти выход, спасибо.

NiOl, пока недопонял. В вашем способе - тот же результат, что у amel27, или вы пошли дальше?

gora
30-09-2010, 23:21
Надобы найти бесплатный разархиватор 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.

amel27
01-10-2010, 02:41
WinRar, во первых, это условно-бесплатная программа, т.е. ей можно пользоваться и не покупая, просто окно Winrar будет надоедать. А вот утилитка RAR.exe из состава Winrar - бесплатна, и ей можно спокойно пользоваться, не нарушая лицензионных прав. »
скажем, freeware она точно не является:
WinRAR – это shareware-продукт, который даёт возможность бесплатно попробовать продукт перед покупкой в течение 40 дней.RAR.EXE хоть и работает без проблем, но также выдаёт предупреждение о незарегистрированной версии

amel27
01-10-2010, 03:18
на 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.

Заранее спасибо.

Iska
09-09-2014, 23:50
Чтобы не плодить тем, апну эту »
Напрасно. Ваша тема к данной имеет весьма опосредованное отношение.

но у меня много архивов »
Типы архивов какие?

в каждом архиве всего один файл с расширением .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