пример коммандного файла, формирующего переменные для года, месяца, дня недели и пр.:
{codecitation style="brush: bat;"}
@Echo Off For /F "Skip=1" %%i In ('WMIC Path Win32_LocalTime Get Day') ^ Do Set $Day=%%i&GoTo Day :Day For /F "Skip=1" %%i In ('WMIC Path Win32_LocalTime Get Month') ^ Do Set $Month=%%i&GoTo Month :Month For /F "Tokens=%$Month% Delims=," %%i ^ In ("Январь,Февраль,Март,Апрель,Май,Июнь,Июль,Август,Сентябрь,Октябрь,Ноябрь,Декабрь") ^ Do Set $MonthName=%%i For /F "Skip=1" %%i In ('WMIC Path Win32_LocalTime Get Year') ^ Do Set $Year=%%i&GoTo Year :Year For /F "Skip=1" %%i In ('WMIC Path Win32_LocalTime Get DayOfWeek') ^ Do Set /A $DayOfWeek=%%i+1&GoTo DayOfWeek :DayOfWeek For /F "Tokens=%$DayOfWeek% Delims=," %%i ^ In ("Воскресенье,Понедельник,Вторник,Среда,Четверг,Пятница,Суббота") ^ Do Set $DayOfWeekName=%%i For /F "Skip=1" %%i In ('WMIC Path Win32_LocalTime Get WeekInMonth') ^ Do Set $WeekInMonth=%%i&GoTo WeekInMonth :WeekInMonth For /F "Skip=1" %%i In ('WMIC Path Win32_LocalTime Get Hour') ^ Do Set $Hour=%%i&GoTo Hour :Hour For /F "Skip=1" %%i In ('WMIC Path Win32_LocalTime Get Minute') ^ Do Set $Minute=%%i&GoTo Minute :Minute For /F "Skip=1" %%i In ('WMIC Path Win32_LocalTime Get Second') ^ Do Set $Second=%%i&GoTo Second :Second Echo -------------------------------------- Echo День : %$Day% Echo Месяц : %$MonthName% (%$Month%-й месяц года) Echo Год : %$Year% Echo -------------------------------------- Echo День недели : %$DayOfWeekName% (%$DayOfWeek%-й день недели) Echo Неделя месяца: %$WeekInMonth% Echo -------------------------------------- Echo Часов : %$Hour% Echo Минут : %$Minute% Echo Секунд : %$Second% Echo -------------------------------------- pause
{/codecitation}
коммандный файл делающий архив и обновляющий базу:
{codecitation style="brush: xml;"}
@Echo Off rem Формируем переменную дня недели $DayOfWeek rem Нумерация не наша т.е. Воскресенье - 1, Понедельник - 2 ..... For /F "Skip=1" %%i In ('WMIC Path Win32_LocalTime Get DayOfWeek') ^ Do Set /A $DayOfWeek=%%i+1&GoTo DayOfWeek :DayOfWeek rem меняем диск где записана 1С C: cd "C:\Program Files\1cv81\bin" rem запускаем архивирование, обратите внимание на флаг WA+, теоретически его можно не ставить rem он отвечает за WIN авторизацию в 1с и установлен по умолчанию. Чтобы не светить пароль rem пользователя, я завел нового пользователя 1С с полными правами и привязал его к авторизации rem админа, от имени которого выполняем назначенное задание. rem G:\backup - заранее созданная папка для бакапов 1cv8.exe CONFIG /S СЕРВЕР_БАЗЫ_ДАННЫХ\БАЗА_ДАННЫХ /WA+ /DumpIB G:\backup\1c_%$DayOfWeek%.dt
rem проверяем на ошибки выполнения после архивирования и пишем лог в g:\BACKUP\1c_err.log rem если архивирование прошло с ошибками, то базу не обновляем if errorlevel 1 ( echo %DATE% BACKUP_ERROR_1 >>g:\BACKUP\1c_err.log
exit ) if errorlevel 101 ( echo %DATE% BACKUP_ERROR_101 >>g:\BACKUP\1c_err.log
exit ) if errorlevel 0 ( echo %DATE% BACKUP_OK >>g:\1cv81\BACKUP\1c_err.log
) rem если ошибок нет - то обновляем базу данных 1cv8.exe CONFIG /S СЕРВЕР_БАЗЫ_ДАННЫХ\БАЗА_ДАННЫХ /WA+ /UpdateDBCfg
rem проверяем на ошибки обновления if errorlevel 1 ( echo %DATE% Update_ERROR_1 >>g:\BACKUP\1c_err.log
exit ) if errorlevel 101 ( echo %DATE% Update_ERROR_101 >>g:\BACKUP\1c_err.log
exit ) if errorlevel 0 ( echo %DATE% Update_OK >>g:\BACKUP\1c_err.log
){/codecitation}