标题: [日期时间] 批处理特殊情况下如何获得正确的日期格式? [打印本页]
作者: pjzhong 时间: 2021-4-30 11:06 标题: 批处理特殊情况下如何获得正确的日期格式?
请问坛子里的各位高手:
正常情况下,我们用date命令可以得到如下的日期格式:
当前日期: 2021-04-30 星期五
然后我用下面这条命令可以得到210430这样的日期格式。
set newdate=%date:~2,2%%date:~5,2%%date:~8,2%
但是我的批处理里面偶尔会运行老的DOS程序(见附件),之后再运行date就变成了这样了:
The current date is: ??? 2021-04-30
这时候再用我的语法就得不到正确的日期格式了。
请问有什么方法可以保证在这两种情况下都能得到正确的日期格式?
(抱歉我无法上传附件和图片)
我自己的想法是查找“202”字符出现的位置,然后以202开始截取10个字符,然后再用“%date:~2,2%%date:~5,2%%date:~8,2%“处理。但是一直没有找到解决办法
作者: Batcher 时间: 2021-4-30 16:15
回复 1# pjzhong
这样可以吗:
http://bbs.bathome.net/thread-3328-1-1.html
作者: cutebe 时间: 2021-4-30 16:48
date变量和date命令是不同的!- ::变量
- echo %date%
-
- ::命令
- date /t
复制代码
之前看到过的一个方法- @echo off
- set "idate=The current date is: ??? 2021-04-30"
-
- for /f "delims=0123456789-/" %%s in ("%idate%")do set "#s=%%s"
- echo 多余字符串:[%#s%]
-
- call set fdate=%%idate:%#s%=%%
- echo 日期:[%fdate%]
-
- pause
- goto :eof
复制代码
作者: Batcher 时间: 2021-5-3 11:33
回复 3# cutebe
这个方法不好的地方在于,它无法确保年、月、日出现的顺序。
作者: pjzhong 时间: 2021-5-8 11:33
回复 3# cutebe
这个方法在当前使用环境下有效,谢谢!
作者: pjzhong 时间: 2021-5-8 11:34
回复 2# Batcher
这个总结太全面了,给了我很多启发,太感谢了!
作者: pjzhong 时间: 2021-5-8 11:38
其实后来我发现导致日期乱码的原因是老的DOS命令把活动代码页变成了英文字符,也就是chcp显示为437。
后来我再原批处理里加入了一条:
CHCP 936 (把活动代码页更改为简体中文)
就又可以使用以前的代码了。
再次感谢大家的解答。
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |