@Echo Off
Setlocal EnableExtensions EnableDelayedExpansion

НАЧАЛО КОММЕНТАРИЯ
:: Установка переменных окружения.
КОНЕЦ КОММЕНТАРИЯ
Call SetupVars

:: НАЧАЛО МЕТКИ A
НАЧАЛО КОММЕНТАРИЯ
:: Установка переменных для данного сценария.
КОНЕЦ КОММЕНТАРИЯ
Set BACKUP=C:NTBackup
Set JOBNAME=NTBackup tools
Set SETDESC=NTBackup tools [%DTSTAMP%]
Set JOBINFO=NTBackup job ?%JOBNAME%? on %COMPUTERNAME%
Set OPTIONS=/hc:on /l:s /m normal /r:yes /v:no
Set LOGFILE=%~dpn0.log
:: КОНЕЦ МЕТКИ A
Set RC=0

НАЧАЛО КОММЕНТАРИЯ
:: Проверка содержимого носителя.
КОНЕЦ КОММЕНТАРИЯ
Call Refresh > «%LOGFILE%»

НАЧАЛО КОММЕНТАРИЯ
:: Проверка наличия ленты.
КОНЕЦ КОММЕНТАРИЯ
Call PhysicalMedia > nul
If %ERRORLEVEL% NEQ 0 (Set RC=%ERR_PHYSICAL_MEDIA%
 Call :DIE «%JOBINFO% aborted: Media not detected (!RC!)»
 Goto :КОНЕЦ)

НАЧАЛО КОММЕНТАРИЯ
:: Определение метки ленты.
КОНЕЦ КОММЕНТАРИЯ
Set MEDIANAME=
For /f «delims=» %%n in (?MediaName /b?) Do Set MEDIANAME=%%n
If Not Defined MEDIANAME (Set RC=%ERR_PARTITION%
 Call :DIE «%JOBINFO% aborted: Unable to determine media name (!RC!)»
 Goto :КОНЕЦ)
Echo Media name: %MEDIANAME% >> «%LOGFILE%»

НАЧАЛО КОММЕНТАРИЯ
:: Определения GUID текущей ленты.
КОНЕЦ КОММЕНТАРИЯ
Set MEDIAGUID=
For /f %%g in (?MediaGUID /b?) Do Set MEDIAGUID=%%g
If Not Defined MEDIAGUID (Set RC=%ERR_LOGICAL_MEDIA%
 Call :DIE «%JOBINFO% aborted: Unable to determine media GUID (!RC!)»
 Goto :КОНЕЦ)
Echo Media GUID: %MEDIAGUID% >> «%LOGFILE%»

:: НАЧАЛО МЕТКИ B
Set COMMAND=NTBackup backup %BACKUP% /j «%JOBNAME%» /d «%SETDESC%»
 /g %MEDIAGUID% /n «%MEDIANAME%» %OPTIONS%
:: КОНЕЦ МЕТКИ B
Echo NTBackup command line: >> «%LOGFILE%»
Echo %COMMAND% >> «%LOGFILE%»
%COMMAND%
Set RC=%ERRORLEVEL%
Echo NTBackup exit code: %RC% >> «%LOGFILE%»

:: НАЧАЛО МЕТКИ C
If /i «%EJECT%»==»YES» Call Eject >> «%LOGFILE%»
If /i «%MAILLOG%»==»YES» Call MailLog «%JOBINFO% [%DTSTAMP%] (%RC%)»
If /i «%PRINTLOG%»==»YES» Call PrintLog
:: КОНЕЦ МЕТКИ C
Goto :КОНЕЦ

:: НАЧАЛО МЕТКИ D
:DIE
Setlocal
Set ERRORMSG=%~1
Echo %ERRORMSG% > «%NTBACKUP_DATA%error.log»
Echo %ERRORMSG% >> «%LOGFILE%»
If /i «%MAILLOG%»==»YES» call MailLog «%ERRORMSG%»
If /i «%PRINTLOG%»==»YES» call PrintLog
Endlocal & Goto :EOF
:: КОНЕЦ МЕТКИ D

:КОНЕЦ
Endlocal & Exit /b %RC%

Поделитесь материалом с коллегами и друзьями