batch-file – 批处理:%time%与环境变量的语法错误

我正在使用以下变量在德语Win7环境中运行Batch脚本:

%date%_%time:~0,2%-%time:~3,2%-%time:~6,2%

这个脚本在10:00到23:59之间运行良好.在0:00到9:59之间我收到一个语法错误(我想因为时间在“:”之前只有一位数)

有人可以帮我弄这个吗?

谢谢!

最佳答案 仍然依赖于语言环境:

set "_datetime=%date%_%time:~0,2%-%time:~3,2%-%time:~6,2%"
set "_datetime=%_datetime: =0%"

对于与语言环境无关的解决方案(是的,在没有_和 – 的情况下):

for /F "tokens=2 delims==" %%G in (
    'wmic OS get LocalDateTime /value'
) do @for /F "tokens=*" %%x in ("%%G") do (
    set "_datetime=%%~x"
)
set "_datetime=%_datetime:~0,14%"
goto :eof

这里的for循环是

> %% G检索LocalDateTime值;
> %% x删除返回值中的结束回车符(wmic行为:每个输出行以0x0D0D0A而不是公共0x0D0A结束).

见Dave Benham的WMIC and FOR /F: A fix for the trailing <CR> problem

点赞