CMD:将日期和时间保存为文件名

时间:2014-09-03 08:02:36

标签: batch-file cmd

我写了脚本来删除临时文件。 脚本创建日志并删除所有文件:

SET RemoveLog=RemoveLog_%date:~-4,4%_%date:~-10,2%_%date:~-7,2%__%time:~0,2%_%time:~3,2%.txt(将创建类似RemoveLog_2014_03_09__09_12.txt的文件)

并在此日志中保存了一些东西:

ECHO. >> %MEMLET%\%RemoveLog%(在这种情况下为空行)

到目前为止,这种情况一直很好,但在一台笔记本电脑上还有其他事情正在发生。

文件保存为RemoveLog_2014_03_09__09_12.txt缺失)

我在脚本中使用>> %MEMLET%\%RemoveLog%的所有地方,在每行末尾的日志中,我看到9_12.txt

为什么会这样?

1 个答案:

答案 0 :(得分:1)

由于%DATE%使用"短日期格式"的窗口设置返回当前日期,因此您无法获得预期效果。此设置完全(无限)可自定义。

一个用户可以将其系统配置为将短日期显示为Wed030914;而另一个用户(即使在同一系统中)可以选择09/03/2014。对于BAT程序员来说,这是一场彻底的噩梦。

一种可能的解决方案是使用 WMIC 。 WMIC是WMI的WMI命令行界面。 WMI Windows Management Instrumentation http://en.wikipedia.org/wiki/Windows_Management_Instrumentation

WMIC Path Win32_LocalTime Get Day,Hour,Minute,Month,Second,Year /Format:table

以方便的方式返回日期,直接用FOR解析它。

完成解析并将各个部分放在一起

 FOR /F "skip=1 tokens=1-6" %%A IN ('WMIC Path Win32_LocalTime Get Day^,Hour^,Minute^,Month^,Second^,Year ^| findstr /r /v "^$"') DO (
    SET REMOVELOG=RemoveLog_%%F_%%D_%%A_%%B_%%C.txt
 )