如何在没有" a.m"," p.m"的情况下打印实际时间和":"?

时间:2016-12-27 18:02:27

标签: batch-file time compare

当我在.bat文件中打印实际时间时,我使用

 TIME /T

但输出如下:

 04:30 a. m.   or  14:30 p. m.

我想知道是否可以删除":"数字和a之间。米/ p。米从它的结尾,所以输出看起来像这样:

 0430 or 1430

此外,我想知道是否可以比较输出或时间本身(时间/ t)。如果它低于X时间,则触发一个动作。我不知道这段代码是否正确,但是这样的话:

 set /a time=TIME /T     
 if %time%<=(01:00 a. m.) (GOTO 0am)
 if %time%<=(02:00 a. m.) (GOTO 1am)
 if %time%<=(03:00 a. m.) (GOTO 2am)
 if %time%<=(04:00 a. m.) (GOTO 3am)
 if %time%<=(05:00 a. m.) (GOTO 4am)
 if %time%<=(06:00 a. m.) (GOTO 5am)
 if %time%<=(07:00 a. m.) (GOTO 6am)
 if %time%<=(08:00 a. m.) (GOTO 7am)
 if %time%<=(09:00 a. m.) (GOTO 8am)
 if %time%<=(10:00 a. m.) (GOTO 9am)
 if %time%<=(11:00 a. m.) (GOTO 10am)
 if %time%<=(12:00 a. m.) (GOTO 11am)
 if %time%<=(13:00 a. m.) (GOTO 12am)
 if %time%<=(14:00 a. m.) (GOTO 1pm)
 if %time%<=(15:00 a. m.) (GOTO 2pm)
 if %time%<=(16:00 a. m.) (GOTO 3pm)
 if %time%<=(17:00 a. m.) (GOTO 4pm)
 if %time%<=(18:00 a. m.) (GOTO 5pm)
 if %time%<=(19:00 a. m.) (GOTO 6pm)
 if %time%<=(20:00 a. m.) (GOTO 7pm)
 if %time%<=(21:00 a. m.) (GOTO 8pm)
 if %time%<=(22:00 a. m.) (GOTO 9pm)
 if %time%<=(23:00 a. m.) (GOTO 10pm)
 if %time%<=(24:00 a. m.) (GOTO 11pm)

如果您知道更简单的方法,请告诉我。

感谢您的时间。

2 个答案:

答案 0 :(得分:0)

为了获得您正在寻找的时间格式,您将需要使用批处理脚本字符串操作。这可以在此示例Format date and time in a Windows batch script中看到。

我相信这样的事情:

set time=%time:a. m.=%

会删除一个。米从现在起。诀窍是删除:因为它是字符串操作语法的一部分。

批处理字符串操作的另一个很好的参考DOS - String Manipulation

答案 1 :(得分:0)

我建议先打开命令提示符窗口,运行set /?并阅读所有输出帮助页面。最后一个帮助页面是关于在批处理文件中使用的内置环境变量,当然还有DATETIME所属的命令行。

DATETIME字符串的格式取决于使用环境变量{{1}为运行批处理文件的用户帐户定义的 Windows区域和语言设置}和DATE

因此,有时最好以区域无关的格式获取日期和时间字符串,这可以通过使用命令来实现

TIME

输出例如

wmic OS GET LocalDateTime /VALUE

查看此字符串时,可以很容易地看到日期和时间字符串格式。

从这个字符串中获取当前小时和分钟,在24小时格式之间没有冒号,小时数为前导零&lt; 10分钟&lt; 10可以使用以下批处理代码:

LocalDateTime=20161227200325.171000+060

WMIC 的输出被 FOR 分成3个字符串,使用@echo off for /F "tokens=2 delims==." %%I in ('%SystemRoot%\System32\wbem\wmic.exe OS GET LocalDateTime /VALUE') do set "LocalTime=%%I" set "LocalTime=%LocalTime:~8,4%" echo Local time in format HHMM is: %LocalTime% pause =作为{{1}定义的分隔符}。对此任务感兴趣的只是第二个字符串,其日期和时间以.引用,并分配给循环变量delims==.。国际格式的日期/时间字符串被分配给环境变量tokens=2

前8个字符用于格式为I的日期,不感兴趣,以及当前秒的最后2个字符。因此,从LocalTime开始,在输出结果时间字符串之前,只在yyyymmdd旁边分配从字符索引位置8开始的4个字符。

发布的 WMIC 输出的批处理文件的输出为:

LocalTime

要了解使用的命令及其工作原理,请打开命令提示符窗口,执行以下命令,并完全阅读为每个命令显示的所有帮助页面。

  • LocalTime
  • Local time in format HHMM is: 2003
  • echo /?
  • for /?
  • pause /?
  • set /?
  • wmic /?