找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 36045|回复: 9

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

[复制链接]
发表于 2014-3-13 15:18:04 | 显示全部楼层 |阅读模式
本帖最后由 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
由此带来后期计算的错误。

因为接触批处理不久,不知是哪里出了问题?特请教。
发表于 2014-3-13 16:23:12 | 显示全部楼层
你日期是什么格式?你输出%time%看看
发表于 2014-3-13 16:24:00 | 显示全部楼层
  1. @echo off
  2. for /f "tokens=1,2 delims=:" %%i in ('time /t') do (
  3.     set xiaos=%%i
  4.     set fenz=%%j
  5. )
  6. set xiaos=10%xiaos: =%
  7. set fenz=10%fenz%
  8. set /a xiaos=xiaos%%100
  9. set /a fenz=fenz%%100
  10. echo %xiaos%
  11. echo %fenz%
  12. pause
复制代码
 楼主| 发表于 2014-3-14 00:14:30 | 显示全部楼层
本帖最后由 jwt2014 于 2014-3-14 00:19 编辑

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

补出错信息:   无效数字。数字常数只能是十进制(17),十六位进制(0x11)或八进制(021)。
 楼主| 发表于 2014-3-14 00:22:46 | 显示全部楼层
晕死,6:08出错,7 :11运行没有问题,9:15出错,似乎不完全上面规律。
发表于 2014-3-14 12:46:13 | 显示全部楼层
回复 5# jwt2014


    你的代码出错还是3楼的代码出错?
 楼主| 发表于 2014-3-15 08:56:55 | 显示全部楼层
问题找到了。日期和时间的格式是03,09格式,如果进行数值计算或赋值时,因为是0开头,所以会被认为是八进制数值,当为08,09格式就需要进位,于是就出错了。而07以下不需要进位所以不会出错。
发表于 2014-3-15 09:59:15 | 显示全部楼层
回复 7# jwt2014
貌似3搂就是解决这个问题的 没试吗?
发表于 2014-3-15 20:57:50 | 显示全部楼层
计算时间,powershell比bat强多了。
总的来说,powershell脚本即简单,比bat语法简单。又可靠。
因为不管什么数值,都要转换成【日期时间对象】。
只要转换时不错,计算是是不会错的,相信我。

具体用法,参见 拙作      http://www.bathome.net/thread-25932-1-3.html   powershell送你把,解决日期计算类问题的金钥匙!
 楼主| 发表于 2014-3-16 00:00:42 | 显示全部楼层
回复 8# terse

当然试过,而且非常好用。主要是我想知道的是出错的原因,知道了原因,方法不是问题。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-20 18:04 , Processed in 0.018023 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表