所以我有一个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