我使用這個腳本來計算文件的時間早:文件比批處理文件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 2014-12-04 15:04:47
@rojo:或PowerShell,因爲它的日期非常好。 – jftuga 2014-12-04 15:18:44
我必須在WIN2K服務器上批量運行這個腳本。根據微軟的說法, 08和09不是有效的數字,因爲8和9不是有效的八進制數字。 我只是想簡化這些條件。 – 2014-12-04 17:48:20