所以我有一個Windows批處理腳本,驗證以查看我輸入的日期格式是否是正確的格式。除了當它到達年份時,所有東西都可以正常工作。它似乎沒有以xxxx的正確格式驗證一年。它會接受任何號碼。它打破了哪裏,我不知道?修復建議?謝謝!Windows批處理文件不驗證年
set i=0
for %%a in (31 28 31 30 31 30 31 31 30 31 30 31) do (
set /A i+=1
set dpm[!i!]=%%a
)
set /P "inDate=Please insert FNOL date (MM-DD-YYYY format): "
if "%inDate:~2,1%%inDate:~5,1%" neq "--" goto invalidDate
for /F "tokens=1-3 delims=-" %%a in ("%inDate%") do set "MM=%%a" & set "DD=%%b" & set "YYYY=%%c"
ver > NUL
set /A month=1%MM%-100, day=1%DD%-100, year=1%YYYY%-10000, leap=year%%4
if errorlevel 1 goto invalidDate
if not defined dpm[%month%] goto invalidDate
if %leap% equ 0 set dpm[2]=29
if %day% gtr !dpm[%month%]! goto invalidDate
if %day% lss 1 goto invalidDate
SET fnoldate=%YYYY%-%MM%-%DD%
ECHO.
SET /P confirmdate=You entered a FNOL date of "%fnoldate%". Is this correct? [y/n]
ECHO.
我實際上擁有所有的代碼。我只是把這個例子的業務結束了。這是一個相當大的批處理文件。 – JBacon9484
當我使用完整的代碼時,我的測試工作。當你嘗試時,你得到的確切消息是什麼? – Tony
實際上沒有消息,它的工作,只是不正確。你可以輸入mm-dd-y,mm-dd-yy,mm-dd-yyyy,mm-dd-yyyyy等等,它會把你放入年份的任何數字放在那裏。它應該只接受YYYY,儘管沒有其他,只能接受。它的mm和dd部分驗證它是否錯誤。年份不是。 – JBacon9484