Batch file 批处理变量评估

Batch file 批处理变量评估,batch-file,cmd,batch-processing,Batch File,Cmd,Batch Processing,我正在编写一个简短的批处理脚本,它正在设置所需的时间格式。 我正在尝试计算最后一个dt变量,这样它将打印调用该变量的时间。不幸的是,它不起作用 以下是脚本的一个片段: @echo off for /f "delims=" %%a in ('wmic OS Get localdatetime ^| find "."') do set dt=%%a set YYYY=%dt:~0,4% set MM=%dt:~4,2% set DD=%dt:~6,2% set HH=%dt:~8,2%

我正在编写一个简短的批处理脚本,它正在设置所需的时间格式。 我正在尝试计算最后一个dt变量,这样它将打印调用该变量的时间。不幸的是,它不起作用 以下是脚本的一个片段:

@echo off
for /f "delims=" %%a in ('wmic OS Get localdatetime  ^| find "."') do set  dt=%%a
set  YYYY=%dt:~0,4%
set  MM=%dt:~4,2%
set  DD=%dt:~6,2%
set  HH=%dt:~8,2%
set  Min=%dt:~10,2%
set  Sec=%dt:~12,2%

set datestamp=%DD%-%MM%-%YYYY%
set timestamp=%HH%:%Min%:%Sec%
set fullstamp=%YYYY%-%MM%-%DD%_%HH%-%Min%-%Sec%
echo datestamp: "%datestamp%"
echo timestamp: "%timestamp%"
echo fullstamp: "%fullstamp%"
pause

echo timestamp: "%timestamp%"
pause
以下是输出:

datestamp: "02-09-2015"
timestamp: "10:36:31"
fullstamp: "2015-09-02_10-36-31"
Press any key to continue . . .
timestamp: "10:36:31"
Press any key to continue . . .
它在这两个echo语句中打印相同的值。
还有什么方法可以修复它吗?

Wmic命令获取此时的日期和时间


所有其他行都使用相同的确切日期和时间。

如@foxidrive所述。。。在这两种情况下使用相同的值。假设您想要显示当前时间,您可以这样做

@echo off
call :GetDateTime
echo datestamp: "%datestamp%"
echo timestamp: "%timestamp%"
echo fullstamp: "%fullstamp%"
pause

call :GetDateTime
echo timestamp: "%timestamp%"
pause
goto :eof

:GetDateTime
for /f "delims=" %%a in ('wmic OS Get localdatetime  ^| find "."') do set dt=%%a
set YYYY=%dt:~0,4%
set MM=%dt:~4,2%
set DD=%dt:~6,2%
set HH=%dt:~8,2%
set Min=%dt:~10,2%
set Sec=%dt:~12,2%

set datestamp=%DD%-%MM%-%YYYY%
set timestamp=%HH%:%Min%:%Sec%
set fullstamp=%YYYY%-%MM%-%DD%_%HH%-%Min%-%Sec%
goto :eof

看看我的答案。您需要执行的任务将决定获取当前时间的最佳方式。