MS-DOS批处理文件中%date%失效如何获取可用日期变量
MS-DOS下%date%返回空值时获取日期用于文件夹命名的解决方案
纯MS-DOS(非Windows NT及以后版本的CMD命令行环境)本身未内置%date%动态变量,调用返回空属于正常现象,可通过以下几种方案实现需求:
原生命令截取方案(无需额外工具,适配所有主流MS-DOS版本)
利用DOS自带date命令的输出特性,通过管道传入回车符让命令仅输出当前日期、不触发修改系统日期的交互,再通过for命令截取年、月、日字段拼接成可用的命名字符串。
示例代码(适配英文版本MS-DOS,输出格式为月-日-年):@echo off rem 向date命令传入回车,导出当前日期到临时文件 echo. | date | find "Current date" > tmp_dt.dat rem 按分隔符截取年月日字段,分隔符可根据自身系统date输出调整 for /f "tokens=2,3,4 delims=/-. " %%m in (tmp_dt.dat) do set foldername=backup_%%m-%%n-%%o rem 创建对应名称文件夹 md %foldername% rem 删除临时文件 del tmp_dt.dat如果使用中文版本MS-DOS,只需要把
find命令匹配的字符串改成当前日期,再根据实际输出的日期位置调整tokens的取值即可。注意拼接日期时必须把默认的/分隔符替换为-或_,否则会因为和DOS路径分隔符冲突导致文件夹创建失败。第三方工具快速获取方案
如果觉得字符串截取适配版本麻烦,可以使用DOS环境下兼容的日期获取单文件小工具(比如getdate、datex等),放到批处理同目录下直接调用即可。这类工具一般可以直接把年、月、日值写入指定环境变量,不需要手动处理文本截取,格式可控性更强。
示例调用逻辑:@echo off getdate /y:yy /m:mm /d:dd md backup_%yy%-%mm%-%dd%环境异常修复方案
如果是在Windows 9x的DOS窗口中遇到%date%返回空的问题,大概率是COMMAND.COM版本不匹配、或者启动时未加载默认环境变量扩展,替换为对应系统版本的COMMAND.COM重新启动DOS环境即可正常使用内置日期变量。
内容的提问来源于stack exchange,提问作者Chris McQueen
相关产品推荐
相关产品推荐

