?? windows批處理的高級用法.txt
字號:
Windows批處理的高級用法 【字體:小 大】
Windows批處理的高級用法
作者:未知 文章來源:華夏收集 點擊數:795 更新時間:2006-5-28
嗯,標題好像很大,貌似會圖文并茂的講解很多用法似的……嘿嘿,其實沒這么復雜,只是從一個例子出發,拋磚引玉,引出Windows批處理中并不為我們注意的高級用法。真的很有用哦!
有這么一個需求,要求做一個批處理文件,能夠自動執行某個目錄中的幾個可執行文件,并且把它們的屏幕輸出存入一個Log文件中。這里涉及到兩個問題:
如何將屏幕輸出轉向到文件
如何確定Log的文件名
這兩個問題都比較簡單。第一個問題,通過“>”和“>>”可以輕松搞定,第二個問題似乎也不難,因為Windows支持環境變量,其中有一個“%DATE%”代表當前的日期,還有個“%TIME%”代表當時的時間,精確到百分之一秒。似乎這已經足夠了吧,于是寫出下面的腳本:
@echo off
SET LogFile=%DATE%%TIME%.log
app1.exe param1 param2 > %LogFile%
app2.exe param1 param2 >> %LogFile%
app3.exe param1 param2 >> %LogFile%
但是,很可惜,它無法按預期結果運行,它只會生成一個沒有擴展名的文件,形如“2006-05-25”。想了想,哦,明白了,因為%DATE%打出來的東西是“2006-05-25 星期四”,遇到空格之后重定向的機制就開始起作用了,它以為這就是文件名全稱了。
好了,那么我來加上引號,這下應該無敵了吧。
@echo off
SET LogFile="%DATE%%TIME%.log"
app1.exe param1 param2 > %LogFile%
app2.exe param1 param2 >> %LogFile%
app3.exe param1 param2 >> %LogFile%
但是,還是很可惜,Windows會報告“參數錯誤”。這又是怎么了呢?嗯,原來,Windows不允許文件名或目錄名中含有“:”,而%TIME%的輸出結果中恰好有兩個“:”。這就無語了。
正在絕望之時,突然在命令行里鬼使神差的敲了一個“help set”,一切問題都明白了!以前都沒有意識到啊,Windows批處理竟有如此強大的威力(當然,這還是沒法和*nix比,不過已經比原來認識到的強多了)。
現在知道了,這個腳本可以這樣寫:
@echo off
SET LogFile=%DATE%%TIME%
REM 把 : 都替換成 -
SET LogFile=%LogFile::=-%
REM 把空格都替換成 -
SET LogFile=%LogFile =-%
REM 把 . 都替換成 -
SET LogFile=%LogFile.=-%
SET LogFile=%LogFile%.log
app1.exe param1 param2 > %LogFile%
app2.exe param1 param2 >> %LogFile%
app3.exe param1 param2 >> %LogFile%
至于具體的原理,大家可以在命令行里面敲help set就可以清楚看到了,Windows的文檔做的就是好啊。
此外,還有help if和help call也很值得看,這些東西組合起來就構成了Windows批處理的高級用法。
嗯,說完了(噢,好像什么都沒說啊……)。
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -