Windows Batch:获取日期时出现错误消息

时间:2015-06-29 07:11:24

标签: batch-file

我有以下批处理文件:

SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
for /f "tokens=2,3,4,5,6 usebackq delims=:/ " %%a in ('!date! !time!) do echo %%c-%%a-%%b %%d %%e 
ENDLOCAL

我想简单回应当前的日期。 而是将此消息输出到控制台:

The system cannot find the file 'Mon 06/29/2015 10:07:48.90.

有什么问题? 感谢

1 个答案:

答案 0 :(得分:1)

SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
for /f "tokens=2-6 delims=:/ " %%a in ("!date! !time!") do echo %%c-%%a-%%b %%d %%e 
ENDLOCAL

但是,您的脚本依赖于Windows语言环境;例如,在我的语言环境中应该是:

SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
for /f "tokens=1-5 delims=:. " %%a in ("!date! !time!") do echo %%c-%%b-%%a %%d %%e 
ENDLOCAL

根据下一个代码段考虑与区域设置无关的解决方案:

for /F %%g in ('
  wmic OS get LocalDateTime /value^|findstr "="
  ') do for /F %%G in ("%%g") do echo set "_%%G"

返回CIM_DATETIME format

set "_LocalDateTime=20150629093247.246000+120"
::                  yyyymmddHHMMSS.mmmmmmsUUU

在调试之前将... do echo set "_%%G"替换为... do set "_%%G"。然后,下一个代码段会显示2015-06-29 09 59

SETLOCAL enableextensions enabledelayedexpansion
for /F %%g in ('
  wmic OS get LocalDateTime /value^|findstr "="
  ') do for /F %%G in ("%%g") do set "_%%G"
  echo !_LocalDateTime:~0,4!-!_LocalDateTime:~4,2!-!_LocalDateTime:~6,2! !_LocalDateTime:~8,2! !_LocalDateTime:~10,2!