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

Seryoga204 07-10-2010 20:15 1513817

Бекап если при наличии файлов
 
Подскажите пожалуйста, при помощи батника делаю бекап содержимого папок
Код:

@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 1513865

Код:

@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 1513896

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 1513903

Цитата:

Цитата El Sanchez
int\... 2010" 2>nul||"C:\Program Files\7-Zi... »

Браво! Изящное решение!
Стало стыдно за свой wall_of_code


Время: 02:59.

Время: 02:59.
© OSzone.net 2001-