Windows 批处理文件时间比较

标签 windows batch-file cmd

我正在尝试将当前系统时间与设定时间进行比较。请看下面:

 set currentTime=%TIME%
 set flag=false

 if %currentTime% geq 07:00 if %currentTime% leq 22:45 set flag=true

 if %flag%==true (


 ) else (

 )

如果时间在早上 7 点到晚上 10:45 之间,则执行此操作,否则执行其他操作。

问题是这行不通。结果不断变化。我认为这与我与 07:00 的比较有关

最佳答案

您的脚本失败的原因是上午 10 点之前的时间。当时间小于 10 时,%Time% 变量返回此格式:"H:MM:SS:ss"。然而,当 10 或更高时 %Time% 变量返回此格式:"HH:MM:SS:ss"

请注意在 10 缺失之前的时间开始处缺失的 0。这会导致比较问题,因为批处理进行的是字符串比较而不是数字比较。

07:00 小于 6:00 因为 6 的 ASCII 值大于0

如果时间在上午 10 点之前,该解决方案要求您在时间的开头附加一个零。

只是改变

set currentTime=%TIME%

进入

set "currentTime=%Time: =0%"

这会将时间中的所有空格替换为零。

关于Windows 批处理文件时间比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14282788/

相关文章:

windows - 代码签名 Windows 驱动程序

c++ - 将文件移动到不同的目录

vim - "Last modified"标题或状态行中的时间

Windows 通用 (UWP) 图表库

asp.net - 您实现/使用 WebDAV 有哪些经验?

windows - 批量转到丢失错误级别

windows - 无法从 Windows 注册表运行 vbs 文件

java - 从 java netbeans 使用 Runtime.getRuntime().exec 时没有结果

mysql - 使用 CMD 导入 SQL 数据库 - 唯一访问被拒绝错误

python - "Failed to locate the winutils binary"但我的 pyspark 仍然有效