中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-09-23 14:46
47,812 主题排行 / 349,917 发帖 / 今日 0 篇 / 48,273 会员排行
DOS批处理 & 脚本技术(批处理室) » (已结)CMD下如何把AM/PM的时间方式更改为24小时制并输入到系
可打印版本  2,606 / 7
第1楼 voiL 发表于 2005-11-08 22:13
中级用户 发帖 189 积分 384
(已结)CMD下如何把AM/PM的时间方式更改为24小时制并输入到系
环境:WinXP CMD(CMD Ver 5.1.2600)

我需要向网络内一台叫A1(192.168.0.112)的计算机校对时间,然后把本地时间改成与A1的一样.

然而我用net time之后,输出的文本是如下格式的.

\\192.168.0.112 的当前时间是 2005/11/8 下午 09:47

命令成功完成。


我把09和47滤出来了,也导入到系统了.

但当前时间可是下午的9点多啊,也就是21点多.

请教高手们有没办法把09改成21.

请勿使用第三方工具.

我所写的批处理如下:

net time \\192.168.0.112>%temp%\$112$.tmp
FOR /F "tokens=5,6* delims=: " %%a in (%temp%\$112$.tmp) do (Set voltime=%%a%%b) & echo time %%a:%%b>%temp%\$Newime$.bat
Start %temp%\$Newtime$.bat
Del /Q %temp%\$Newtime$.bat


把运行$Newtime.bat$之后,系统的时间就成了9点多了.

[ Last edited by voiL on 2005-11-9 at 20:18 ]
第2楼 willsort 发表于 2005-11-09 19:06
元老会员 发帖 1,512 积分 4,432
Re voiL:

试试下面的代码:



[ Last edited by willsort on 2005-11-9 at 19:07 ]
第3楼 voiL 发表于 2005-11-09 20:16
中级用户 发帖 189 积分 384
多谢willsort的指点,试用过您给出的代码,确实可行.

只是修改本地时间那里不能实现,必须把"/t"去掉才行.

time /t %_hour%:%3>nul 应当改为 time %_hour%:%3>nul
第4楼 voiL 发表于 2005-11-10 12:45
中级用户 发帖 189 积分 384
测试环境:WinXP CMD(CMD VER 5.1.2600)

经过反复试验,发现willsort兄的代码还有些BUG.

如果192.168.0.112的机子时间是12:00~12:59的时候.

net time \\192.168.0.112得到的结果是:

\\192.168.0.112 的当前时间是 2005/11/10 下午 12:22

命令成功完成。


到这里,willsort兄应该能看出问题了吧??

在经过以下代码运算后,会把时间改成 24:22(一个系统不能接受的时间)

if "%1"=="下午" if "%_hour:~0,1%"=="0" set _hour=%_hour:~-1%
if "%1"=="下午" set /a _hour=%_hour%+12


我把代码改成以下样式之后,就没有出现过同样的问题.

if "%1"=="下午" if "%_hour:~0,1%"=="0" set _hour=%_hour:~-1%
if "%1"=="下午" if "%2"=="12" set /a _hour=%_hour%+12
第5楼 willsort 发表于 2005-11-10 19:45
元老会员 发帖 1,512 积分 4,432
Re voiL:

  甚为欣赏兄实际测试的行动和独立思索的意识,希望能与兄多多交流。

  time /t 的问题确实是我的疏忽,因为我在 xp_cmd 下使用 time 时习惯上使用 time /t 的格式;12点的问题我也曾有考虑,但是因为在我的印象中系统不会给出下午12点的时间,而是会给出上午0点的时间,因此最终对此未作处理。

  说到底都是测试的问题,因为我不想再测试中更改我的系统时钟,所以 time /t 一句是写作 echo time /t %_hour%:%3 的,测得显示结果没有问题后,就将代码改成上述模样直接贴出了;而12点问题,因为自己的系统不是12时制的,所以也就偷懒未作测试了。许许多多的事实一再证实,不经测试或测试不周的代码是绝对靠不住的!可惜很多得到论坛所贴代码的朋友不会理睬这些,所以这才显示出兄进行实际的和周到的测试的可贵。

  另外,你帖子中最后代码的第二句是否应改为:

if "%1"=="下午" if not "%2"=="12" set /a _hour=%_hour%+12
第6楼 voiL 发表于 2005-11-11 19:13
中级用户 发帖 189 积分 384
多谢willsort兄指点.

我有个请求,希望大哥能给予帮助:

能否把以下代码中红色部分说明一下,如果可以的话,能否把if中与之相关的资料给我一份?因为我在CMD下查不到这些资料.在google上翻了十几页也找不到.

if "%1"=="下午" if "%_hour:~0,1%"=="0" set _hour=%_hour:~-1%
第7楼 willsort 发表于 2005-11-12 18:44
元老会员 发帖 1,512 积分 4,432
Re voiL:

红色字体所示的代码是环境变量的引用特性,与 if 无关。请查阅命令环境变量设置命令 set 的帮助文档,简单的用法是在CMD下使用 set /?。
第8楼 voiL 发表于 2005-11-12 22:31
中级用户 发帖 189 积分 384
OK.谢了.
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023