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

[日期时间] 批处理特殊情况下如何获得正确的日期格式?

请问坛子里的各位高手:
正常情况下,我们用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%“处理。但是一直没有找到解决办法

回复 1# pjzhong


这样可以吗:
http://bbs.bathome.net/thread-3328-1-1.html
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

date变量和date命令是不同的!
  1. ::变量
  2. echo %date%
  3. ::命令
  4. date /t
复制代码
之前看到过的一个方法
  1. @echo off
  2. set "idate=The current date is: ??? 2021-04-30"
  3. for /f "delims=0123456789-/" %%s in ("%idate%")do set "#s=%%s"
  4. echo 多余字符串:[%#s%]
  5. call set fdate=%%idate:%#s%=%%
  6. echo 日期:[%fdate%]
  7. pause
  8. goto :eof
复制代码
如无特别说明,代码测试环境均为 XP SP3

TOP

回复 3# cutebe


    这个方法不好的地方在于,它无法确保年、月、日出现的顺序。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 3# cutebe


    这个方法在当前使用环境下有效,谢谢!

TOP

回复 2# Batcher


    这个总结太全面了,给了我很多启发,太感谢了!

TOP

其实后来我发现导致日期乱码的原因是老的DOS命令把活动代码页变成了英文字符,也就是chcp显示为437。
后来我再原批处理里加入了一条:
CHCP 936   (把活动代码页更改为简体中文)
就又可以使用以前的代码了。

再次感谢大家的解答。

TOP

返回列表