Компьютерный форум 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=223104)

vvs360 16-12-2011 23:59 1816631

архивирование с помощью батника
 
Доброго времени.Подскажите пожалуйста,есть батник for /R %%i in (*.*) do (7z a -tzip "%%i.zip" "%%i" & del "%%i"),есть папка в которой несколько папок.Надо заархивировать только файлы в папках.Не получается.Не сильно в этом силен.Если можно подробнее расписать,то буду благодарен.Спасибо.

megaloman 17-12-2011 15:50 1816886

Код:

@Echo Off
FOR /F "usebackq delims=" %%j IN (`Dir /s /b /A:D`) DO Call :SubDir "%%j"
GoTo :Eof

:SubDir
FOR /F "usebackq delims=" %%i IN (`Dir %1 /b /A:-D`) DO (
    7z a -tzip "%~1\%%i.zip" "%~1\%%i"
    If Exist "%~1\%%i.zip" del "%~1\%%i"
)


vvs360 17-12-2011 19:58 1816997

Вложений: 1
Спасибо огромное за ответ.Только у меня много в папке папок, и бат архивирует первую папку нормально,а последующие идут так zip.zip.zip, т.е. сколько папок столько и зипов. А мне надо по одному зипу.Спасибо.

vvs360 17-12-2011 20:42 1817013

Разобрался,спасибо.Убрал переменную ( /s ) и все получилось.Еще раз спасибо.+++++++++

megaloman 17-12-2011 22:11 1817058

Я исправил ответ: батник правильно отработает со всеми папками, в том числе и вложенными. Кроме того, я посчитал, что перед удалением исходного надёжнее проверить наличие Zip-файла. Ваш рецепт убрать ключ /s не универсален.
Но, кроме того, в Вашей постановке кроется один "ухаб" - зачем упаковывать уже упакованный файл при повторном запуске батника. Вот вариант решения:
Код:

@Echo Off
FOR /F "usebackq delims=" %%j IN (`Dir /s /b /A:D`) DO Call :SubDir "%%j"
GoTo :Eof

:SubDir
FOR /F "usebackq delims=" %%i IN (`Dir %1 /b /A:-D`) DO (
    If /I Not %%~xi==.zip (
        7z a -tzip "%~1\%%i.zip" "%~1\%%i"
        If Exist "%~1\%%i.zip" del "%~1\%%i"
    )
)

То есть при повторном запуске упакуем только неупакованные файлы в папках, если они появятся

vvs360 21-12-2011 22:53 1819779

Спасибо за ответ ,все работает.


Время: 09:56.

Время: 09:56.
© OSzone.net 2001-