Пакетный скрипт - вычитание (или добавление) дней из упрощенного текущего дня
Это можно сделать с помощью пакетного сценария, который устанавливает переменную даты и вычитает 1 день (или любое количество дней в этом отношении) из текущей даты, в которой выполняется пакетный сценарий. Поэтому вам необходимо убедиться, что на день, на который вы запланировали выполнение сценария, вы ожидаете, что в этот день будут произведены вычисления для определения значений дат в имени файла журнала за предыдущий день.
Я добавил больше комментариев в сценарий, чтобы объяснить, что делает каждая переменная и так далее, но в основном вы устанавливаете переменные в пакетном сценарии как обычно, и они будут использоваться для построения трех динамических VB-сценариев для вычисления вычитания даты, при необходимости добавьте начальные нули и т. д. для переменных YYYY, MM и DD.
Чтобы добавить: Вы также можете использовать этот сценарий для добавления количества дней к текущей дате, удалив символ минус (-
) из приведенного ниже пакетного сценария в процедуре :DynamicVBSScriptBuild
, поэтому, где вы видите это ,-%MinusDay%,
вы просто удалите символ минус, чтобы получить ,%MinusDay%,
в каждой из этих строк, и теперь значение переменной MinusDay=
будет равно числу дней, которое вы хотите добавить.
Важное примечание: кажется, что пять 9 (99999
) - это предел для пакетного сценария при вычитании со значением MinusDays=
. Также кажется, что шесть 9 (999999
) - это предел для пакетного сценария при добавлении со значением MinusDays=
.
Пакетный скрипт
@ECHO ON
::// Minus days is the number of days to subtract from the CURRENT DAY i.e. 2 for minus 2 days or 99999 for minus 99999 days from when it's run
SET MinusDay=2
::// Set the archive file full path and file name
SET ArchiveFile=C:\ArchivePath\Archive.zip
:: This calls the temp vbs script routine that will be used to set YYYY-MM-DD values for the subtracted days date you specify
CALL :DynamicVBSScriptBuild
FOR /F "TOKENS=*" %%A IN ('cscript//nologo "%YYYYTmpVBS%"') DO SET YYYY=%%A
FOR /F "TOKENS=*" %%A IN ('cscript//nologo "%MMTmpVBS%"') DO SET MM=%%A
FOR /F "TOKENS=*" %%A IN ('cscript//nologo "%DDTmpVBS%"') DO SET DD=%%A
::// Set your web server log file path in the below variable
SET WebServerLogPath=C:\WebServer\Logs
::// Set web server log file name where YYYY MM DD variables are set to the values after the day numbers setup above are subtracted
SET WebServerLogFile=Log.%YYYY%-%MM%-%DD%.txt
::CD /D "C:\Program Files\7-Zip"
7z a "%ArchiveFile%" "%WebServerLogPath%\%WebServerLogFile%"
::GOTO EOF
EXIT /B
:DynamicVBSScriptBuild
SET YYYYTmpVBS=%temp%\~tmp_yyyy.vbs
SET MMTmpVBS=%temp%\~tmp_mm.vbs
SET DDTmpVBS=%temp%\~tmp_dd.vbs
IF EXIST "%YYYYTmpVBS%" DEL /Q /F "%YYYYTmpVBS%"
IF EXIST "%MMTmpVBS%" DEL /Q /F "%MMTmpVBS%"
IF EXIST "%DDTmpVBS%" DEL /Q /F "%DDTmpVBS%"
ECHO dt = DateAdd("d",-%MinusDay%,date) >> "%YYYYTmpVBS%"
ECHO yyyy = Year(dt) >> "%YYYYTmpVBS%"
ECHO WScript.Echo yyyy >> "%YYYYTmpVBS%"
ECHO dt = DateAdd("d",-%MinusDay%,date) >> "%MMTmpVBS%"
ECHO mm = Right("0" ^& Month(dt),2) >> "%MMTmpVBS%"
ECHO WScript.Echo mm >> "%MMTmpVBS%"
ECHO dt = DateAdd("d",-%MinusDay%,date) >> "%DDTmpVBS%"
ECHO dd = Right("0" ^& Day(dt),2) >> "%DDTmpVBS%"
ECHO WScript.Echo dd >> "%DDTmpVBS%"
GOTO EOF
Дополнительные ресурсы