在 Windows 7 中的命令中获取自定义日期格式

Mar*_*uza 5 windows-7 batch command-line

我正在 Windows 7 的 .bat 文件中创建备份脚本。作为脚本的一部分,我创建了一个日志文件。我想使用以下日期格式创建日志文件:YYYYDDMM_HH24MISS_backup.log

关于如何做到这一点的任何想法?

Joh*_*n T 5

子串乐趣!

set filename=%date:~6,4%%date:~0,2%%date:~3,2%_%time:~0,2%24%time:~3,2%%time:~6,2%_backup.log
Run Code Online (Sandbox Code Playgroud)

然后只需在脚本中将数据附加到它:

echo "some new data" >> %filename%
ipconfig /all >> %filename%
Run Code Online (Sandbox Code Playgroud)

输出文件名示例:

20092810_23242544_backup.log

不确定你是否想要在 HH 24小时后硬编码24

  • 请记住,这仅适用于某些语言环境,而对于其他语言环境却会失败(或错误解释某些字段)。您可以在 http://robvanderwoude.com/datetimentparse.php 中查看一些更强大的方法。 (3认同)

Mar*_*uza 5

感谢所有的帮助!使用您在此处发布的所有信息是我最终使用的信息:

REM SET YEAR
set YEAR=%date:~6,4%

REM SET MONTH
set MONTH=%date:~3,2%
if %MONTH% LSS 10 set MONTH=%MONTH:~1,2%
if %MONTH% LSS 10 set MONTH=0%MONTH%

REM SET DAY
set DAY=%date:~0,2%
if %DAY% LSS 10 set DAY=%DAY:~1,2%
if %DAY% LSS 10 set DAY=0%DAY%

REM SET HOUR
set HOUR=%time:~0,2%
if %HOUR% LSS 10 set HOUR=%HOUR:~1,2%
if %HOUR% LSS 10 set HOUR=0%HOUR%

REM SET MINUTE
set MINUTE=%time:~3,2%
if %MINUTE% LSS 10 set MINUTE=%MINUTE:~1,2%
if %MINUTE% LSS 10 set MINUTE=0%MINUTE%

REM SET SECOND
set SECOND=%time:~6,2%
if %SECOND% LSS 10 set SECOND=%SECOND:~1,2%
if %SECOND% LSS 10 set SECOND=0%SECOND%

set filename=%YEAR%%MONTH%%DAY%_%HOUR%%MINUTE%%SECOND%.log
Run Code Online (Sandbox Code Playgroud)