2015-09-02 179 views
0

我正在寫一個設置所需時間格式的短批處理腳本。 我試圖評估最後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 . . . 

它在這兩個回聲語句中打印相同的值。 有沒有辦法解決它?

+0

查看我的回答。您需要執行的任務將確定獲得當前時間的最佳方式。 – foxidrive

回答

0

Wmic命令獲取當時的日期和時間。

所有其他行使用相同的確切日期和時間。

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