Войти

Показать полную графическую версию : [решено] Бекап если при наличии файлов


Seryoga204
07-10-2010, 20:15
Подскажите пожалуйста, при помощи батника делаю бекап содержимого папок
@Echo Off
COLOR 9F
:: Переменные
Set tm=%time::=-%
Set tm=%date:~6,4%-%date:~3,2%-%date:~0,2%_%tm:~0,-3%
"C:\Program Files\7-Zip\7z.exe" a d:\arhiv\tm_%tm%.zip L:\work\Print\2010\*
CD "L:\work\Print\2010\*" && rd /q /s . 2>nul
как сделать чтобы не создавался архив, если в данная папка пуста?

Anonymоus
07-10-2010, 21:08
@Echo Off
Color 9F

Set ArchPath=C:\Program Files\7-Zip
Set WorkDir=D:\Temp\test
Set TargetDir=D:\Temp\arch
Set tm=%time::=-%
Set tm=%date:~6,4%-%date:~3,2%-%date:~0,2%_%tm:~0,-3%

Call :CheckDir %WorkDir%
If %ErrorLevel%==1 Echo Нечего архивировать & Ping -n 5 127.0.0.1>nul & Exit
"%ArchPath%\7z.exe" a "%TargetDir%\tm_%tm%.zip" "%WorkDir%\*"
Pause
Exit

:CheckDir
SetLocal EnableExtensions EnableDelayedExpansion
Set Destination=%1
Set NotEmpty=n
For /F %%a In ('Dir /B /S %Destination%\*.*') Do (
If ["%%~za"] GTR ["0"] (
set NotEmpty=y
goto :StopScan
))
:StopScan
If %NotEmpty%==n (Exit /B 1) Else (Exit /B 0)

ArchPath соответственно - путь к архиватору (без имени исполняемого файла), WorkDir - директория с содержимым которой будет работать архиватор, TargetDir - директория в которой будут сложены архивы. Если в %WorkDir% пусто - будет выведено соответствующее сообщение и скрипт завершит свою работу. Под "пусто" подразумевается то, что в этой директории и её поддиректориях не будет ни одного файла размером больше 0 байт.

El Sanchez
07-10-2010, 21:50
Seryoga204,

@Echo Off
COLOR 9F
:: Переменные
Set tm=%time::=-%
Set tm=%date:~6,4%-%date:~3,2%-%date:~0,2%_%tm:~0,-3%
if exist "L:\work\Print\2010" rd "L:\work\Print\2010" 2>nul||"C:\Program Files\7-Zip\7z.exe" a d:\arhiv\tm_%tm%.zip "L:\work\Print\2010\*"&&rd /q /s "L:\work\Print\2010" 2>nul

Anonymоus
07-10-2010, 22:03
int\... 2010" 2>nul||"C:\Program Files\7-Zi... »
Браво! Изящное решение!
Стало стыдно за свой wall_of_code




© OSzone.net 2001-2012