不带空格的批处理脚本时间戳变量 YYYY-MM-DD-HH-MM-SS

Batch Script Timestamp Variable without spaces YYYY-MM-DD-HH-MM-SS

我像这样在批处理脚本中创建了一个时间戳变量...

set TIMESTAMP=%DATE:~10,4%-%DATE:~4,2%-%DATE:~7,2%-%TIME:~0,2%-%TIME:~3,2%-%TIME:~6,2%

当 HH 只是一个数字时,我得到了一个问题...

YYYY-MM-DD- 2-MM-SS

而不是

YYYY-MM-DD-02-MM-SS

如何始终生成不带空格的时间戳?

set "timestamp=%timestamp: =0%"

用零替换空格。

请参阅文档提示中的 set /?

不要使用 locale/user 设置依赖日期时间变量但 wmic:

@Echo off
For /f "delims=." %%A in (
  'wmic os get LocalDateTime^|findstr ^^20'
) Do Set DT=%%A
Set "TIMESTAMP=%DT:~0,4%-%DT:~4,2%-%DT:~6,2%-%DT:~8,2%-%DT:~10,2%-%DT:~12,2%"
Set TimeStamp

示例输出:

> SO_45465890.cmd
TIMESTAMP=2017-08-02-18-42-07

或者使用 PowerShell 并让它进行格式化:

@Echo off
For /f %%A in ('powershell -NoP -C "get-date -f \"yyyy-MM-dd-HH-mm-ss\""') Do Set TimeStamp=%%A
Set TimeStamp