[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[日期时间] 【已解决】BAT批处理提取系统时间的格式问题

本帖最后由 jwt2014 于 2014-3-16 00:01 编辑
  1. for /f "tokens=1,2 delims=:" %%i in ('time/t') do (
  2. set/a xiaos=%%i
  3. set/a fenz=%%j
  4. )
复制代码
使用上面的代码提取系统的小时和分钟,原本运行的结果如下:
xiaos=9
fenz=18
但今天提取的却是下面格式(同一台机器,同一个系统):
xiaos=09
fenz=18
由此带来后期计算的错误。

因为接触批处理不久,不知是哪里出了问题?特请教。

本帖最后由 jwt2014 于 2014-3-14 00:19 编辑

谢谢楼上的回复。尽管还没弄懂有些语句的意思,但运行了一下对于“09”格式处理的非常好。
不过,我再次经过各种测试,发现了一个规律:当系统时间的小时为5以下时,我的前述语句运行结果是第一种(xiaos=5),不影响后续计算,但当时间调到小时为6点以上,9点以下时,运行结果就是第二种(xiaos=06),这是为什么?印象中记得曾经有人解释过这里面涉及了批处理对数据的处理方式,但找了一下没找到,想请高手解释一下,谢谢!

补出错信息:   无效数字。数字常数只能是十进制(17),十六位进制(0x11)或八进制(021)。

TOP

晕死,6:08出错,7 :11运行没有问题,9:15出错,似乎不完全上面规律。

TOP

问题找到了。日期和时间的格式是03,09格式,如果进行数值计算或赋值时,因为是0开头,所以会被认为是八进制数值,当为08,09格式就需要进位,于是就出错了。而07以下不需要进位所以不会出错。

TOP

回复 8# terse

当然试过,而且非常好用。主要是我想知道的是出错的原因,知道了原因,方法不是问题。

TOP

返回列表