Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Переименование дубликатов файлов при распаковке из архивов в одну папку (http://forum.oszone.net/showthread.php?t=186957)

truvo 29-09-2010 01:58 1506947

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

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

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

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

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

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

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

Delirium 29-09-2010 13:39 1507280

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

truvo 29-09-2010 20:22 1507628

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

amel27 30-09-2010 12:32 1508082

Цитата:

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

думаю, такое можно с любым архиватором осуществить...
например, RAR'ом можно перед распаковкой переименовать файлы readme.txt прямо в архивах:
Код:

for %%i in (*.rar) do rar rn "%%i" readme.txt "%%~ni_readme.txt"

NiOl 30-09-2010 13:56 1508129

Надобы найти бесплатный разархиватор 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 1508379

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 1508543

Цитата:

Цитата NiOl
Надобы найти бесплатный разархиватор ZIP`ов, ибо RAR все же надо покупать... (я на сайте pkware не нашел ) »

7-Zip
Цитата:

7z e archive.zip

извлекает все файлы из архива archive.zip в текущий каталог.

7z e archive.zip -oc:\soft

извлекает все файлы из архива archive.zip в папку c:\soft.

Delirium 01-10-2010 01:01 1508584

Господа, вы о чем вообще говорите. WinRar, во первых, это условно-бесплатная программа, т.е. ей можно пользоваться и не покупая, просто окно Winrar будет надоедать. А вот утилитка RAR.exe из состава Winrar - бесплатна, и ей можно спокойно пользоваться, не нарушая лицензионных прав.
Ну либо пользоваться 7-zip.

amel27 01-10-2010 02:41 1508613

Цитата:

Цитата Delirium
WinRar, во первых, это условно-бесплатная программа, т.е. ей можно пользоваться и не покупая, просто окно Winrar будет надоедать. А вот утилитка RAR.exe из состава Winrar - бесплатна, и ей можно спокойно пользоваться, не нарушая лицензионных прав. »

скажем, freeware она точно не является:
Цитата:

Цитата http://www.win-rar.ru/product/winrar/
WinRAR – это shareware-продукт, который даёт возможность бесплатно попробовать продукт перед покупкой в течение 40 дней.

RAR.EXE хоть и работает без проблем, но также выдаёт предупреждение о незарегистрированной версии

amel27 01-10-2010 03:18 1508615

на 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 2400533

Здравствуйте.
Чтобы не плодить тем, апну эту =)

Подскажите как можно сделать нечто похожее, что в теме, но у меня много архивов и в каждом архиве всего один файл с расширением .smc но имена у файлов в архиве разные, мне нужно распаковать их так, чтобы все файлы переименовывались в "имя архива.smc" т.е. распаковываемые файла принимали имя своего архива, но расширение оставалось smc.

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

Iska 09-09-2014 23:50 2400605

Цитата:

Цитата Павел_Будков@vk
Чтобы не плодить тем, апну эту »

Напрасно. Ваша тема к данной имеет весьма опосредованное отношение.

Цитата:

Цитата Павел_Будков@vk
но у меня много архивов »

Типы архивов какие?

Цитата:

Цитата Павел_Будков@vk
в каждом архиве всего один файл с расширением .smc »

Ещё что-либо в архиве есть, кроме этого файла?

Павел_Будков@vk 10-09-2014 00:38 2400614

Ну почему же, по сути все тоже.
Покурил инструкции к архиватору и благодаря посту в этой теме сделал так
Код:

for %%i in (*.zip) do "%ProgramFiles%\WinRar\winrar.exe" rn "%%i" "*.smc" "%%~ni.smc"
Все переименовалось как надо и прямо в архивах.

Спасибо всем за посты в данной теме, очень помогло!


Время: 21:25.

Время: 21:25.
© OSzone.net 2001-