如何让DOS输出的日期和时间在只有单字符时补0

想在命名文件的时候,根据当前日期和时间来命名生成的文件,但是默认的方法在生成文件名的时候,会间断性报错,排查了之后发现是因为DOS输出的%date%和%time%会在有单字的时候,在前面填充一个空格,而这个空格会截断DOS命令,导致出错。

解决方法有2个,第一个是直接在系统设置里,或者注册表里改系统日期和时间格式,如图所示:

或直接导入注册表:(请将以下文字保存为“日期时间格式.reg”文件)

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Control Panel\International]
"sLongDate"="yyyy-MM-dd"
"sShortDate"="yyyy-MM-dd"
"sTimeFormat"="HH:mm:ss"
"sShortTime"="HH:mm"
"sYearMonth"="yyyy-MM"

因为作为一般用户,貌似只有Word在插入日期时间的时候会用到这个值,其他地方没有会遇到使用这个值得地方,所以改动应该不会带来什么副作用。其他经常要跟时间打交道的同学请综合评估影响。

第二个方法,在DOS环境中排查%date%、%time%输出的空格,替换为0:,代码如下:

继续阅读“如何让DOS输出的日期和时间在只有单字符时补0”