Войти

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


zerius
07-06-2013, 12:23
Добрый день. Есть такая задача:

На определнном ресурсе лежит множество zip архивов, в каждом из которых лежат папки с файлами. Периодически имена папок (но не файлов в них) повтряются Нужен батник, который будет поочередно распаковывать все архивы в текущую директорию, автоматически перезаписывая данные (т.е. без уведомления). После распаковки все архивы удаляются. Прошу помочь.

Iska
07-06-2013, 13:45
В каком порядке производить извлечение?

RodionRuRu
07-06-2013, 14:26
Мне тоже нужна помощь в этом, по идее удаления архивов это прессет -df

Iska
07-06-2013, 20:55
RodionRuRu, Вам адресую тот же вопрос (http://forum.oszone.net/post-2163787.html#post2163787).

zerius
10-06-2013, 11:20
В каком порядке производить извлечение?

Без разницы, главное, чтобы все архивы поочередно извлеклись.

Iska
10-06-2013, 14:45
Без разницы, »
Не бывает «без разницы» для озвученных условий.

Если содержимое одноимённых файлов разнится — порядок извлечения имеет существенное значение. Если содержимое файлов одинаково — какой смысл перезаписывать файлы, вместо того, чтобы пропускать их?

У Вас какой из этих двух вариантов?


Для «порядок без разницы, перезаписывать файлы»:
@echo off
setlocal enableextensions enabledelayedexpansion

for %%i in ("E:\Песочница\0272\*.zip") do (
<nul set /p sTempVar=%%~fi :
>nul "%ProgramFiles%\7-Zip\7z.exe" x -aoa "%%~fi" && (
echo OK
del /f /q "%%~fi"
) || (
echo Failure
)
)

endlocal
exit /b 0


Для «порядок без разницы, пропускать файлы»:
@echo off
setlocal enableextensions enabledelayedexpansion

for %%i in ("E:\Песочница\0272\*.zip") do (
<nul set /p sTempVar=%%~fi :
>nul "%ProgramFiles%\7-Zip\7z.exe" x -aos "%%~fi" && (
echo OK
del /f /q "%%~fi"
) || (
echo Failure
)
)

endlocal
exit /b 0

zerius
10-06-2013, 15:35
Пропускать не надо. Суть в том, что папки уже существуют на ресурсе, те, которые в архивах, имею такие же имена. При разархивации система будет спрашивать перезапись. У меня правда ни тот, ни другой скрипты не работают.

Пардон, работает.

Iska
10-06-2013, 15:58
zerius, так какой у Вас вариант из двух перечисленных выше:
Если содержимое одноимённых файлов разнится — порядок извлечения имеет существенное значение. Если содержимое файлов одинаково — какой смысл перезаписывать файлы, вместо того, чтобы пропускать их? »
?

zerius
10-06-2013, 17:00
zerius, так какой у Вас вариант из двух перечисленных выше:
Если содержимое одноимённых файлов разнится — порядок извлечения имеет существенное значение. Если содержимое файлов одинаково — какой смысл перезаписывать файлы, вместо того, чтобы пропускать их? »
?

У меня первый. Только загвостка возникла, судя по всему за текущую директорию принимается папка, где лежит скрипт. Можно то же самое, что в первом варианте, только с экстрактом не в текущую, а другую директорию?

Iska
10-06-2013, 23:11
судя по всему за текущую директорию принимается папка, где лежит скрипт. »
Нет. Просто, если Вы запускаете пакетный файл из Проводника двойным щелчком — текущим каталогом для командного процессора будет именно каталог, где содержится этот пакетный файл. Если Вы запускаете пакетный файл из любого произвольного каталога — с указанием относительного или абсолютного пути к пакетному файлу — то текущим каталогом так и останется тот, что был установлен в командном процессоре, ярлыке и т.п.

Можно то же самое, что в первом варианте, только с экстрактом не в текущую, а другую директорию? »
Добавьте параметр:
-o (set Output directory) switch
Specifies a destination directory where files are to be extracted.

Например:

>nul "%ProgramFiles%\7-Zip\7z.exe" x -aoa -oc:\Temp "%%~fi" && (




© OSzone.net 2001-2012