有没有什么办法在批处理脚本中检查时间的格式?如何使用批处理脚本检查时间的格式?
Ex。 我有时间的格式错误的场景:
set tm=431:00:00
我要检查它是否TM和格式HH时间:MM:SS。
if %tm% == %format% (
do something) else (
do nothing)
是否有可能在批处理脚本中做一些这样的检查?
请随身携带。谢谢。作为请求
下面的代码检查
有没有什么办法在批处理脚本中检查时间的格式?如何使用批处理脚本检查时间的格式?
Ex。 我有时间的格式错误的场景:
set tm=431:00:00
我要检查它是否TM和格式HH时间:MM:SS。
if %tm% == %format% (
do something) else (
do nothing)
是否有可能在批处理脚本中做一些这样的检查?
请随身携带。谢谢。作为请求
下面的代码检查
set origTime=%time%
echo %tm% | time > nul
if errorlevel 1 (
echo Time format is invalid
)
echo %origTime% | time > nul
EDIT的新方法: - 该时间有3份结肠 分离 - 每个部分是一个数字 - 3号的乘法是不为零
for /F "tokens=1-3 delims=:" %%a in ("%tm%") do set HH=%%a& set MM=%%b& set SS=%%c
rem Set ERRORLEVEL to zero:
ver > nul
set /A result=%HH%*%MM%*%SS% > nul
if errorlevel 1 echo Bad format
if %result% == 0 echo Bad format
先前的例子可以给你如何对其他案件检查更多的想法...
它的工作,但我忘了添加其他情况比如%tm%的值是4,肯定它的错误级别是0,因为它是真的。你能给出任何想法来解决这个问题吗? – quinekxi
一个简单的方法是使用FINDSTR /R
进行正则表达式检查,看看时间是否具有正确的位数。
set tm=43:00:00
echo %tm%| findstr /R "^[0-2][0-9]:[0-5][0-9]:[0-5][0-9]$"
if errorlevel 1 (
echo Invalid time!
) else (
echo OK
)
这种做法的问题是,FINDSTR只有有限的正则表达式的支持,所以你不能真正与上面告诉我们,如果时间实际上是有意义的(例如,如果是每小时25 ...)
您可以通过做一些单独的检查来改进脚本。例如:如果小时的第一个数字是[2],那么第二个数字必须是[0-3]。然而,为了所有这些努力,我宁愿打电话给一个简单的PowerShell脚本来检查时间是否正确,并在批处理文件中使用PS脚本的输出。
也许这会对你有用 - http://stackoverflow.com/questions/1192476/windows-batch-script-format-date-and-time –