我需要从批处理脚本中访问当前时间。 当在cmd中input时间时 ,我得到这样的东西:
The current time is: 16:58:03.98 Enter the new time:
我所需要的不是那个,而是我可以以任意方式处理的分开的桶中的小时,分钟和秒钟。 换句话说,我正在寻找一个返回小时值的函数,以便我可以将它分配给一个variables,如下所示:
var hour = GetCurrentHour()
谢谢!
FOR /F "TOKENS=1 DELIMS=:" %%A IN ('TIME/T') DO SET HH=%%A FOR /F "TOKENS=2 DELIMS=:" %%A IN ('TIME/T') DO SET MM=%%A
现在你有两个variables%HH%小时和%MM%分钟。 希望这有助于。
时间和date在两个系统variables中定义:%time%&%date%
(请注意,格式取决于地区和语言设置)
C:> echo%time%
17:16:13,39
C:> echo%date%
28/08/2009
C:>
把所有这些职位结合起来就可以回答原来的问题:
for / f“tokens = 1-3 delims = :.” (“%time%”)中的%% A做(
设置HH = %% A
设置MM = %% B
设置SS = %% C)
将加载您的HH MM和SS桶与相应的值。 当然,你可以input你想要的variables名称。 (禁止保留名称。)您也可以省略“。” 在分隔符部分,如果你想分数秒被存储在最后一个值。 (%time%包含HH:MM:SS.ss)
你必须做的是基本上使用%time%variables,并指定在string中计算一定数量的字符来提取你想要的部分。 在cmd提示符中键入“echo%time%”会返回如下所示的内容:
11:11:38.36
要得到这个string的小时数,input“echo%time:〜-11,2%”,只显示前2个字符。 你基本上是告诉它显示%time%variables – “echo%time …”,从string的末尾向后计数11个字符 – “…:〜11 …”,并从中获取2个字符点 – “…,2%”
要抓住分钟的命令将是“回声%时间:〜8,2%”
要设置variables“小时”到当前小时,您应该input:
设置小时=%时间:〜-11,2%
你也可以将部分串联在一起,以创build一个你需要的组合的自定义格式。 例如,要在HH:MM:SS之间添加破折号而不是冒号,可以input:
“回波%时间:〜-11,2% – %时间:〜-8,2% – %时间:〜-5,2%”
并得到:HH-MM-SS
希望这可以帮助。 我们使用%date%variables和它的所有时间部分来自动创build任何string组合中的文件,我们需要文件名。
结合Merstzik和Benoit的答案,并保存一个外部程序的调用,你可以这样做:
FOR /F "TOKENS=1 DELIMS=:" %%A IN ("%TIME%") DO SET HH=%%A FOR /F "TOKENS=2 DELIMS=:" %%A IN ("%TIME%") DO SET MM=%%A
尝试在CMD中执行此操作是很危险的,因为TIME / T或%TIME%的结果是依赖于语言环境的。 如果你设置在一个单一的区域,你可以这样做:
FOR /F "TOKENS=1,2 DELIMS=: " %%A IN ('TIME/T') DO SET HH=%%A && SET MM=%%B
但是,使用PowerShell会更好。 CMD脚本很难很好地编写。 关于编写好的CMD脚本还有很多需要学习的东西,但是将这些脑细胞应用到PowerShell会更好。
$ hour =(Get-Date).Hour