2011-12-28 68 views
5

我無法找到提取當前日/月/年的批處理文件語法的簡單細目。批處理文件日/月/年語法?

我有以下語法來聲明一個變量用作目錄名稱;

set folder=%date:~10,4%%date:~7,2%%date:~4,2% 

任何人都可以在徘徊,雙倍百分比意味着什麼?(或張貼鏈接)?我似乎無法完全從直覺中破譯它。

+0

你可以看到這篇文章,有很好的例子:http://stackoverflow.com/questions/1192476/windows-batch-script-format-date-and-time – 2011-12-28 23:49:39

+0

谷歌「windows批處理文件語法」 – 2011-12-28 23:49:47

+1

@Fredrik ,所以SO的目標是在你的谷歌「windows批處理文件語法」的列表**頂部** :-) – paxdiablo 2011-12-29 00:00:57

回答

7

雙倍百分比意味着什麼都沒有。它只是兩個並行擴展的結果,例如:

echo %firstname%%lastname% 
    \_________/\________/ 
     Two separate expansions. 

代字號提供了一個子字符串。在你的情況下,%date:~10,4%爲你提供了date環境變量(年份在這種情況下,因爲格式可能爲Thu 29/12/2011,偏移量從零開始)的偏移十處的四個字符。

如果您在Windows命令pronpt進入set /?,它會解釋給你所有的選項,包括使用負偏移從字符串的結束提取的漂亮的把戲。

但是,您應該記住date環境變量格式取決於語言環境,所以這種簡單的字符串提取不太可能適用於所有國際版本的Windows(這一點我幾年前)。

一個更好的解決方案是使用WMI來獲取最新組件如Rob van der Woude's excellent scripting pages,這裏複製的完整性:

FOR /F "skip=1 tokens=1-6" %%A IN ('WMIC Path Win32_LocalTime Get Dayˆ,Hourˆ,Minuteˆ,Monthˆ,Secondˆ,Year /Format:table') DO (
    IF NOT "%%~F"=="" (
     SET /A SortDate = 10000 * %%F + 100 * %%D + %%A 
     SET /A SortTime = 10000 * %%B + 100 * %%C + %%E 
     SET SortTime=0000000!SortTime! 
     SET SortTime=!SortTime:~-6! 
    ) 
) 
2

〜和%% s正在拆分字符串(如果您只是將date輸入到命令中,它會顯示完整的字符串)。

%日期:~10.4%表示從第10個角色開始接下來的4個角色。

還要注意不同的PC使用不同的區域設置,因爲它們更改字符串中這些字符的順序。