批量变量评估

时间:2015-09-02 07:26:14

标签: batch-file cmd batch-processing

我正在编写一个简短的批处理脚本,它正在设置所需的时间格式。 我正在尝试评估最后一个dt变量,因此它将打印变量被调用的时间,但不幸的是它不起作用 这是脚本的片段:

www.mysite.site2.com/folder2

这是输出:

@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

它在这两个echo语句中打印相同的值。 无论如何要解决它?

2 个答案:

答案 0 :(得分:0)

Wmic命令获取当时的日期和时间。

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

答案 1 :(得分:0)

正如@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