************************************參考出處http://alexchuo.blogspot.tw/2006/07/blog-post.html************************************
C:\>echo %date%
螢幕輸出:
2006/03/07 星期二 <----- Windows XP/Server 2003 的結果
星期二 2006/03/07 <----- Windows 2000 的結果
看到沒?Windows 2000 會先顯示星期,再顯示日期,所以我們在後續取出日期的年、月、日或星期的時候,要特別注意他們的順序。 再來看看時間變數的內容是什麼:
接著我們使用 FOR 指令來把日期的分隔符號「/」以及空白(White Space)去掉,並將其結果顯示在螢幕上(
MyDate.bat 的檔案內容如下所示:
----程式開始---- REM 取得日期
FOR /F "tokens=1-4 delims=/ " %%a IN ("%date%") DO (
SET _MyDate=%%a%%b%%c%%d
)
REM 顯示去掉分隔符號後的結果
echo %_MyDate%
----程式結束----
看看執行的結果:
C:\>MyDate
螢幕輸出:
20060307星期二
想不到只是透過幾行程式碼就可以去掉日期變數的分隔符號了,相信有不少人看不懂那段程式碼,就讓我簡單地說明一下吧!
/F 是指定將後面 %date% 的環境變數當成檔案來處理,而處理的依據就是在「"tokens=1-4 delims=/ "」這邊。tokens如果按照字面翻譯的話,是權杖的意思,這樣翻不太直覺,在這邊翻成順序可能比較好一些。以這個例子來說,就是要取得順序 1 ~ 4 的字串,那程式怎麼知道這個順序的分法呢?
透 過 delims 這個引述的設定,程式就知道要怎麼去分析 %date% 環境變數的順序。在 delims 等號右邊的字元就是用來指定分割順序的依據。以這個例子來說,我們用「/」與「 」(空白,White Space)這兩個分隔符號來分割 %date% 的順序。因此原本 %date% 的內容是 2006/03/07 星期二,在程式來看就變成了:
順序 內 容
﹉﹉ ﹉﹉﹉﹉
1 2006
2 03
3 07
4 星期二
%%a 是說把順序 1 的結果指派給名稱為 %%a 的變數,因此順序 2 的變數名稱就會是 %%b,以此類推,最多可以有 52 個變數,原因如下:變數名稱有大小寫之分,所以 %%a 跟 %%A 不同,且僅能以一個英文字母來命名,所以 26(個字母)× 2(大寫跟小寫 2 種)=52(個)。
DO 後面的括號內容是用來指定所要執行的命令內容,以這個例子來說,就是指定一個名稱為 _MyDate 的變數,它的內容是由 %%a%%b%%c%%d 所構成的。
************************************參考出處http://alexchuo.blogspot.tw/2006/07/blog-post.html************************************
如:
內容
FOR /F "tokens=1,2,3,4 delims=/ " %%I IN ('DATE /t') DO SET mydate=%%I-%%J-%%K echo %mydate% echo %mydate2% |
執行結果
C:\2014-01-07 C:\星期二 |