Помощь в автоматической разархивации
Добрый день. Есть такая задача:
На определнном ресурсе лежит множество zip архивов, в каждом из которых лежат папки с файлами. Периодически имена папок (но не файлов в них) повтряются Нужен батник, который будет поочередно распаковывать все архивы в текущую директорию, автоматически перезаписывая данные (т.е. без уведомления). После распаковки все архивы удаляются. Прошу помочь.
|
В каком порядке производить извлечение?
|
RodionRuRu |
07-06-2013 14:26 2163819 |
Мне тоже нужна помощь в этом, по идее удаления архивов это прессет -df
|
Цитата:
Цитата Iska
(Сообщение 2163787)
В каком порядке производить извлечение?
|
Без разницы, главное, чтобы все архивы поочередно извлеклись.
|
Не бывает «без разницы» для озвученных условий.
Если содержимое одноимённых файлов разнится — порядок извлечения имеет существенное значение. Если содержимое файлов одинаково — какой смысл перезаписывать файлы, вместо того, чтобы пропускать их?
У Вас какой из этих двух вариантов?
Для «порядок без разницы, перезаписывать файлы»:
Код:
@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, так какой у Вас вариант из двух перечисленных выше:
Цитата:
Цитата Iska
Если содержимое одноимённых файлов разнится — порядок извлечения имеет существенное значение. Если содержимое файлов одинаково — какой смысл перезаписывать файлы, вместо того, чтобы пропускать их? »
|
?
|
Цитата:
Цитата Iska
(Сообщение 2165366)
zerius, так какой у Вас вариант из двух перечисленных выше:
Цитата:
Цитата Iska
Если содержимое одноимённых файлов разнится — порядок извлечения имеет существенное значение. Если содержимое файлов одинаково — какой смысл перезаписывать файлы, вместо того, чтобы пропускать их? »
|
?
|
У меня первый. Только загвостка возникла, судя по всему за текущую директорию принимается папка, где лежит скрипт. Можно то же самое, что в первом варианте, только с экстрактом не в текущую, а другую директорию?
|
Цитата:
Цитата zerius
судя по всему за текущую директорию принимается папка, где лежит скрипт. »
|
Нет. Просто, если Вы запускаете пакетный файл из Проводника двойным щелчком — текущим каталогом для командного процессора будет именно каталог, где содержится этот пакетный файл. Если Вы запускаете пакетный файл из любого произвольного каталога — с указанием относительного или абсолютного пути к пакетному файлу — то текущим каталогом так и останется тот, что был установлен в командном процессоре, ярлыке и т.п.
Цитата:
Цитата zerius
Можно то же самое, что в первом варианте, только с экстрактом не в текущую, а другую директорию? »
|
Добавьте параметр:
Цитата:
-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" && (
…
|
Время: 12:51.
© OSzone.net 2001-