Я использую этот скрипт для вычисления времени файла:Файл старше 4-х минут в пакетном файле
set "filename=myfile.txt"
rem extract current date and time
for /f "tokens=1-5 delims=.:, " %%a in ("%date% %time%") do (
set day=%%a&set mon=%%b&set yr=%%c&set hr=%%d&set min=%%e
)
rem extract file date and time
for /f "tokens=1-5 delims=.:, " %%a in ('"dir %filename%|find "%filename%""') do
(
set fday=%%a&set fmon=%%b&set fyr=%%c&set fhr=%%d&set fmin=%%e
)
rem calculate age of file (in minutes)
set /a "age=((hr*60+min)-(fhr*60+fmin)+(24*60))%%(24*60)"
set /a "max=8"
if %age% geq %max% echo.file is older than 8 minutes
Но у меня были некоторые ошибки и исправить мне пришлось использовать следующие условия:
if %hr% EQU 08 set hr=8
if %hr% EQU 09 set hr=9
if %min% EQU 08 set min=8
if %min% EQU 09 set min=9
if %fhr% EQU 08 set fhr=8
if %fhr% EQU 09 set fhr=9
if %fmin% EQU 08 set fmin=8
if %fmin% EQU 09 set fmin=9
Есть ли более простой способ решить проблему без использования тех условий, которые я создал?
Да. Пакет ужасен для математики даты/времени. Возможно, лучше использовать другой язык - VBScript или JScript. Я отвечу с некоторым доказательством концепции. – rojo
@rojo: Или PowerShell, как и даты, очень хорошо. – jftuga
Мне нужно запустить этот скрипт в пакетном режиме на сервере WIN2K. Согласно Microsoft, 08 и 09 являются недопустимыми числами, потому что 8 и 9 не являются действительными восьмеричными цифрами. Я просто хотел упростить эти условия. –