пример коммандного файла, формирующего переменные для года, месяца, дня недели и пр.:
{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}
