Batch file 如何打印实际时间而不打印“时间”;a、 m"&引用;p、 m";及&引用;?

Batch file 如何打印实际时间而不打印“时间”;a、 m"&引用;p、 m";及&引用;?,batch-file,time,compare,Batch File,Time,Compare,当我在.bat文件中打印实际时间时,我使用 TIME /T 但是输出是这样的: 04:30 a. m. or 14:30 p. m. 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.) (

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

 TIME /T
但是输出是这样的:

 04:30 a. m.   or  14:30 p. m.
 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)
set time=%time:a. m.=%
我想知道是否可以删除数字和a之间的“:”。m、 /PM从末尾开始,输出如下所示:

 0430 or 1430
另外,我想知道是否可以比较输出或时间本身(time/t)。如果低于X时间,则会触发一个操作。我不知道这个代码是否正确,但类似这样的代码:

 04:30 a. m.   or  14:30 p. m.
 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)
set time=%time:a. m.=%
set/a time=time/T

如果%time%要获得所需的时间格式,需要使用批脚本字符串操作。这可以在这个例子中看到

我相信是这样的:

 04:30 a. m.   or  14:30 p. m.
 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)
set time=%time:a. m.=%
将删除a。M从那时起。诀窍是删除:因为它是字符串操作语法的一部分


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

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

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

出于这个原因,有时最好以独立于区域的格式获取日期和时间字符串,这可以通过使用命令来实现

wmic OS GET LocalDateTime /VALUE
例如,哪个输出

LocalDateTime=20161227200325.171000+060
查看此字符串可以很容易地看到日期和时间字符串格式

要从该字符串中仅获取当前小时和分钟,在24小时格式中不带冒号,前导零表示小时<10分钟<10分钟,可以使用以下批处理代码:

@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
WMIC的输出被分成3个字符串,使用
=
作为分隔符,如
delims==。
所定义。此任务只需要第二个字符串,其中日期和时间由
tokens=2
引用,分配给循环变量
I
。国际格式的日期/时间字符串被分配给环境变量
LocalTime

前8个字符表示格式为
yyyyymmdd
的日期,不感兴趣,最后2个字符表示当前第二个。因此,从
LocalTime
输出结果时间字符串之前,仅将从字符索引位置8开始的4个字符分配到
LocalTime
旁边

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

Local time in format HHMM is: 2003
要了解所使用的命令及其工作方式,请打开命令提示符窗口,在其中执行以下命令,并非常仔细地阅读为每个命令显示的所有帮助页面

  • echo/?
  • 获取/?
  • 暂停/?
  • 设置/?
  • wmic/?
  • wmic操作系统/?
  • wmic操作系统获取/?

如果您第一次使用rtm,那就太好了。请参阅
帮助设置
帮助(如果
),或访问感谢人!可以将数字与“:”进行比较:“介于两者之间?我不这么认为。我能想到的最佳方法是在删除am pm字符后使用“set time=%time::=%”。