Ну, а это самое серьезное
Используется для создания бекапов для mssql сервера.
Надеюсь кому-нибудь пригодмтся :-)
CODE
@echo off
rem Важно !!! Кодировка DOS !!!
rem ************
rem * Backup.cmd - архивирование базы *
rem ************
set Database=%1
set Login=%2
set Password=%3
if '%Database%'=='' goto :Usage
if '%Database%'=='/?' goto :Usage
rem !!!! В случае длинных имен - указывать БЕЗ КАВЫЧЕК !!!
rem Путь к каталогу бакапов на сервере
set Backup=D:\MSSQL\BACKUP
rem Microsoft SQL Server Command Line Tool
set ISQL=C:\PROGRA~1\MICROS~3\90\TOOLS\BINN\osql.exe
rem Имя SQL Server'a
set SQLServer=ALPHA
set BackupUser=%Login%
rem Утилита архивирования командной строки
set RAR=C:\PROGRA~1\WINRAR\rar.exe
rem Утилита forfiles - для запуска процедуры удаления дла старых бакапов
set FORFILES=C:\Scripts\forfiles.exe
rem Удалять бакапы, старше этого количества дней
set Days=90
rem Сетевые ресурсы для резервного копирования
rem В случае, если копирование по сети не нужно, установите пути пустыми
Set Path01=\\ALPHA\D$\Backups
Set Path02=\\CHICAGO\Disk\Backups
rem Лог файл о результатах копирования, в случае, если копирование не ве-дется, не используется
set Log=c:\backup_log.txt
rem Проверки
IF NOT EXIST "%ISQL%" (echo Microsoft SQL Server Command Line Tool "%ISQL%" не найден!
echo Поправьте значение переменной ISQL в командном файле!
goto :EOF)
IF NOT EXIST "%RAR%" (echo Архиватор "%RAR%" не найден!
echo Поправьте значение переменной RAR в командном файле!
goto :EOF)
IF NOT EXIST "%FORFILES%" (echo Утилита "%FORFILES%" не найдена!
echo Поправьте значение переменной FORFILES в командном файле!
goto :EOF)
IF NOT EXIST "%backup%" (echo Каталог бакапов "%Backup%" не найден!
echo Поправьте значение переменной BACKUP в командном файле!
goto :EOF)
if NOT '%Path01%'=='' (IF NOT EXIST "%Path01%" (echo Каталог бакапов "%Path01%" не найден!
echo Поправьте значение переменной Path01 в командном файле!
echo %date% %time% Поправьте значение переменной Path01 в командном файле! >> %log%
set Path01=)
)
if NOT '%Path02%'=='' (IF NOT EXIST "%Path02%" (echo Каталог бакапов "%Path02%" не найден!
echo Поправьте значение переменной Path02 в командном файле!
echo %date% %time% Поправьте значение переменной Path02 в командном файле! >> %log%
set Path02=)
)
for /f "tokens=1-4 delims=. " %%i in ('date /t') do set longdate=%%i%%j%%k
set temp=C:\TEMP
set FileName=%longdate:~0,2%_%longdate:~2,2%_%longdate:~4,4%
rem дата в формате 2003_04_12
echo Дата: %Filename%
echo SQL Server: %SQLServer%
echo База данных: %Database%
echo.
echo 1. Снятие Backup...
set ArcSQL=%temp%\arcsrv.sql
echo USE master > %ArcSQL%
echo EXEC sp_addumpdevice 'disk', '%Database%_Backup', '%BACKUP%\%Database%_%FileName%.bcp' >> %ArcSQL%
echo BACKUP DATABASE %DataBase% TO %Database%_Backup >> %ArcSQL%
echo exec sp_dropdevice '%Database%_Backup' >> %ArcSQL%
"%ISQL%" -S %SQLServer% -d master -U %BackupUser% -P %Password% -i %ArcSQL% -n
echo 2. Упаковка backup'а...
cd "%BACKUP%"
"%RAR%" a "%BACKUP%\%Database%_%FileName%" "%BACKUP%\*%Filename%.bcp" -rr -c -ep -av -idp -id -idc
echo 2. Копирование резервных копий в сети...
if not '%Path01%'=='' Call :CopyProc "%Path01%"
if not '%Path02%'=='' Call :CopyProc "%Path02%"
echo 3. Лог результата копирования
set i=0
IF EXIST "%BACKUP%\%Database%_%FileName%.rar" (set /a i=%i%+1)
IF EXIST "%Path01%\%Database%_%FileName%.rar" (set /a i=%i%+1)
IF EXIST "%Path02%\%Database%_%FileName%.rar" (set /a i=%i%+1)
echo %Date% %time% - Backup %Database% завершен! Готово архивов: %i% из 3 >> %log%
echo.
echo Backup complete
if /i %i% NEQ 0 (Call :Delete)
goto :EoF
:Delete
:удаляю все что старше...
"%forfiles%" -p"%Backup%" -s -m*.rar -d-%Days% -c"CMD /C del @PATH\@FILE"
if not '%Path01%'=='' ("%forfiles%" -p"%Path01%" -s -m*.rar -d-90 -c"CMD /C del @PATH\@FILE")
if not '%Path02%'=='' ("%forfiles%" -p"%Path02%" -s -m*.rar -d-90 -c"CMD /C del @PATH\@FILE")
del "%backup%\*.bcp"
goto :eof
:CopyProc
echo Копирование... %1
copy "%BACKUP%\%Database%_%FileName%.rar" %1
goto :eof
:usage
echo.
echo Использование:
echo BACKUP {Имя базы данных} {Логин} {Пароль}
goto :eof
:eof