今天為了幫朋友減輕他的工作量,就幫他寫了一個批處理檔案。
該批處理檔案的功能包含如下:
1.執行批處理檔案2.bat時,建立一個檔案夾a。該檔案夾的檔案夾名是根據時間來命名的。
2. 檔案夾命名好後,緊跟着就調用批處理檔案3.bat,4.bat,5.bat,而且這幾個批處理開始的時間,不能相差太多。
3.其中執行3.bat或者4.bat時,也是有要求的。要把3.bat執行的結果b存放到檔案夾a中,而且該結果b的命名是根據時分秒來命名的。
為了達到上述的要求,我寫的代碼如下。同時為了能更清晰的說明問題及實驗,我把2.bat的代碼貼出來,做一一說明。
2.bat代碼内容:
@echo off
md "d:\%date:~0,4%-%date:~5,2%-%date:~8,2%-%time:~0,2%-%time:~3,2%"
start d:\ceshi\3.bat
start d:\ceshi\4.bat
start d:\ceshi\5.bat
exit
其中md "d:\%date:~0,4%-%date:~5,2%-%date:~8,2%-%time:~0,2%-%time:~3,2%"是要在d盤建立一個以時間來命名的檔案夾,命名的形式為“2011-05-07-12-44”,表明該檔案夾是2011年5月17号12點44分建立的。
start d:\ceshi\3.bat是要調用d盤ceshi檔案夾下的3.bat檔案。說明其實批處理檔案之間的調用,還可以使用call,但是該朋友說,這幾個批處理檔案開始執行的時間不能相差太多,是以就使用start指令了。同時call指令是在調用該行指令執行結束後,才會調用下一行指令。
下面就把3.bat的代碼貼出來,如下:
set rp=%time:~0,2%-%time:~3,2%
if exist d:\%date:~0,4%-%date:~5,2%-%date:~8,2%-%time:~0,2%-%time:~3,2% (ping -n 4 baidu.com >d:\%date:~0,4%-%date:~5,2%-%date:~8,2%-%time:~0,2%-%time:~3,2%\%rp%.txt)
其中set rp=%time:~0,2%-%time:~3,2%的意思是設定rp為%time:~0,2%-%time:~3,2%,這個是為了,給3.bat執行的結果命名使用的
if exist d:\%date:~0,4%-%date:~5,2%-%date:~8,2%-%time:~0,2%-%time:~3,2%,這個是判斷在d盤是否存在d:\%date:~0,4%-%date:~5,2%-%date:~8,2%-%time:~0,2%-%time:~3,2%這個檔案夾,而%date:~0,4%-%date:~5,2%-%date:~8,2%-%time:~0,2%-%time:~3,2%這個檔案夾是根據時間來指令的,他不會像在此顯示的這個樣。如果存在這樣一個檔案夾,那麼就執行ping -n 4 baidu.com >d:\%date:~0,4%-%date:~5,2%-%date:~8,2%-%time:~0,2%-%time:~3,2%\%rp%.txt,并且把執行的結果存放到d:\%date:~0,4%-%date:~5,2%-%date:~8,2%-%time:~0,2%-%time:~3,2%檔案夾下,并且把檔案是以%rp%為名稱的記事本檔案。
執行結果的相關截圖如下:
