【问题标题】:CMD: Save date and time as a file nameCMD:将日期和时间保存为文件名
【发布时间】:2014-09-03 16:44:46
【问题描述】:

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

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

为什么会这样?

【问题讨论】:

  • 笔记本电脑的日期格式不同
  • 如何在文件中保存日期以便在任何地方都可以使用?
  • 我在这里回答了一个非常相似的问题:stackoverflow.com/a/22813968/2152082
  • Here 你有一个不错的选项列表

标签: batch-file cmd


【解决方案1】:

您没有得到预期的结果,因为%DATE% 使用“短日期格式”的 Windows 设置返回当前日期。此设置是完全(无限)可定制的。

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

一种可能的解决方案是改用 WMIC。 WMIC 是 WMI 的 WMI 命令行界面。 WMI Windows Management Instrumentationhttp://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
 )

【讨论】:

  • 日、月、时、分、秒不会有前导零。
  • 它回答了您的问题,避免了 %date% 格式问题。您需要围绕它构建您的解决方案。你也可以试试WMIC OS get localdateTime
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-08-25
  • 2018-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多