比較詳細(xì)的手把手教你寫批處理(willsort題注版)第2/5頁
更新時間:2008年09月03日 11:27:35 作者:
Climbing 兄可謂用心良苦,受其感昭,略緊微薄之力;原文內(nèi)容一字未易,僅于每段之下另加題注,其文大多非為糾錯,多是年來體會,或偶得,或漸悟,未免偏頗;又加近來俗事漸多,閑情愈少,心浮氣燥,一蹴而就。義理悖逆,敬請斧正;措辭不當(dāng),尚請莫怪。
[轉(zhuǎn)帖并完善]手把手教你寫批處理
原文作者寫東西很沒有專業(yè)精神,寫的文章簡直是錯誤百出,而且啰里八索,如果不加以修改和完善,簡直是誤人子弟,因此,我在原文的基礎(chǔ)上進(jìn)行了修改,修正了大部分錯誤(當(dāng)然,不可避免可能會有新的錯誤,希望高手發(fā)現(xiàn)后能夠及時指出來)。
URL: http://www.txwm.com/News/technic/200408/2004081609515074304.html
摘自:天下網(wǎng)吧聯(lián)盟 作者:佚名
修改及完善:Climbing(xclimbing@msn.com)
最后修改日期:2004年8月19日
==== willsort 編注 =====================================================
以下關(guān)于命令的分類, 有很多值得推敲的地方. 常用命令中的 @本不是命令, , 而 dir copy等也很常用的命令卻沒有列入, 而特殊命令中所有命令對我來說都是常用命令. 建議將批處理所引用的命令分為內(nèi)部命令, 外部命令, 第三方程序三類. 而內(nèi)部命令和外部命令中中別有一類是專用于或常用于批處理中的命令可稱之為 "批處理命令".
以下摘錄MS-DOS 6.22 幫助文檔中關(guān)于 "批處理命令" 的文字, 當(dāng)然, 其中有些概念和定義已經(jīng)有些落后了.
批處理命令
批處理文件或批處理程序是一個包含若干MS-DOS命令的正文文件,擴(kuò)展名為.BAT。當(dāng)在命令提示符下敲入批處理程序的名稱時,MS-DOS成組執(zhí)行此批處理程序中的命令。
任何在命令提示符下可使用的命令都可用在批處理程序中。此外,下面MS-DOS命令是專門在批處理程序中使用的。
<Call> <If>
<Choice> <Pause>
<Echo> <Rem>
<For> <Shift>
<Goto>
========================================================================
常用命令
echo、@、call、pause、rem(小技巧:用::代替rem)是批處理文件最常用的幾個命令,我們就從他們開始學(xué)起。
==== willsort 編注 =====================================================
首先, @ 不是一個命令, 而是DOS 批處理的一個特殊標(biāo)記符, 僅用于屏蔽命令行回顯. 下面是DOS命令行或批處理中可能會見到的一些特殊標(biāo)記符:
CR(0D) 命令行結(jié)束符
Escape(1B) ANSI轉(zhuǎn)義字符引導(dǎo)符
Space(20) 常用的參數(shù)界定符
Tab(09) ; = 不常用的參數(shù)界定符
+ COPY命令文件連接符
* ? 文件通配符
"" 字符串界定符
| 命令管道符
< > >> 文件重定向符
@ 命令行回顯屏蔽符
/ 參數(shù)開關(guān)引導(dǎo)符
: 批處理標(biāo)簽引導(dǎo)符
% 批處理變量引導(dǎo)符
其次, :: 確實可以起到rem 的注釋作用, 而且更簡潔有效; 但有兩點需要注意:
第一, 除了 :: 之外, 任何以 :開頭的字符行, 在批處理中都被視作標(biāo)號, 而直接忽略其后的所有內(nèi)容, 只是為了與正常的標(biāo)號相區(qū)別, 建議使用 goto 所無法識別的標(biāo)號, 即在 :后緊跟一個非字母數(shù)字的一個特殊符號.
第二, 與rem 不同的是, ::后的字符行在執(zhí)行時不會回顯, 無論是否用echo on打開命令行回顯狀態(tài), 因為命令解釋器不認(rèn)為他是一個有效的命令行, 就此點來看, rem 在某些場合下將比 :: 更為適用; 另外, rem 可以用于 config.sys 文件中.
========================================================================
echo 表示顯示此命令后的字符
echo off 表示在此語句后所有運行的命令都不顯示命令行本身
@與echo off相象,但它是加在每個命令行的最前面,表示運行時不顯示這一行的命令行(只能影響當(dāng)前行)。
call 調(diào)用另一個批處理文件(如果不用call而直接調(diào)用別的批處理文件,那么執(zhí)行完那個批處理文件后將無法返回當(dāng)前文件并執(zhí)行當(dāng)前文件的后續(xù)命令)。
pause 運行此句會暫停批處理的執(zhí)行并在屏幕上顯示Press any key to continue...的提示,等待用戶按任意鍵后繼續(xù)
rem 表示此命令后的字符為解釋行(注釋),不執(zhí)行,只是給自己今后參考用的(相當(dāng)于程序中的注釋)。
==== willsort 編注 =====================================================
此處的描述較為混亂, 不如直接引用個命令的命令行幫助更為條理
----------------------------------------------------------------------------
ECHO
當(dāng)程序運行時,顯示或隱藏批處理程序中的正文。也可用于允許或禁止命令的回顯。
在運行批處理程序時,MS-DOS一般在屏幕上顯示(回顯)批處理程序中的命令。
使用ECHO命令可關(guān)閉此功能。
語法
ECHO [ON|OFF]
若要用echo命令顯示一條命令,可用下述語法:
echo [message]
參數(shù)
ON|OFF
指定是否允許命令的回顯。若要顯示當(dāng)前的ECHO的設(shè)置,可使用不帶參數(shù)的ECHO
命令。
message
指定讓MS-DOS在屏幕上顯示的正文。
----------------------------------------------------------------------------
CALL
從一個批處理程序中調(diào)用另一個批處理程序,而不會引起第一個批處理的中止。
語法
CALL [drive:][path]filename [batch-parameters]
參數(shù)
[drive:][path]filename
指定要調(diào)用的批處理程序的名字及其存放處。文件名必須用.BAT作擴(kuò)展名。
batch-parameters
指定批處理程序所需的命令行信息。
----------------------------------------------------------------------------
PAUSE
暫停批處理程序的執(zhí)行并顯示一條消息,提示用戶按任意鍵繼續(xù)執(zhí)行。只能在批處
理程序中使用該命令。
語法
PAUSE
----------------------------------------------------------------------------
REM
在批處理文件或CONFIG.SYS中加入注解。也可用REM命令來屏蔽命令(在CONFIG.SYS
中也可以用分號(;)代替REM命令,但在批處理文件中則不能替代)。
語法
REM [string]
參數(shù)
string
指定要屏蔽的命令或要包含的注解。
========================================================================
例1:用edit編輯a.bat文件,輸入下列內(nèi)容后存盤為c:\a.bat,執(zhí)行該批處理文件后可實現(xiàn):將根目錄中所有文件寫入 a.txt中,啟動UCDOS,進(jìn)入WPS等功能。
批處理文件的內(nèi)容為: 命令注釋:
@echo off 不顯示后續(xù)命令行及當(dāng)前命令行
dir c:\*.* >a.txt 將c盤文件列表寫入a.txt
call c:\ucdos\ucdos.bat 調(diào)用ucdos
echo 你好 顯示"你好"
pause 暫停,等待按鍵繼續(xù)
rem 準(zhǔn)備運行wps 注釋:準(zhǔn)備運行wps
cd ucdos 進(jìn)入ucdos目錄
wps 運行wps
批處理文件的參數(shù)
批處理文件還可以像C語言的函數(shù)一樣使用參數(shù)(相當(dāng)于DOS命令的命令行參數(shù)),這需要用到一個參數(shù)表示符“%”。
%[1-9]表示參數(shù),參數(shù)是指在運行批處理文件時在文件名后加的以空格(或者Tab)分隔的字符串。變量可以從%0到%9,%0表示批處理命令本身,其它參數(shù)字符串用%1到%9順序表示。
例2:C:根目錄下有一批處理文件名為f.bat,內(nèi)容為:
@echo off
format %1
如果執(zhí)行C:\>f a:
那么在執(zhí)行f.bat時,%1就表示a:,這樣format %1就相當(dāng)于format a:,于是上面的命令運行時實際執(zhí)行的是format a:
例3:C:根目錄下一批處理文件名為t.bat,內(nèi)容為:
@echo off
type %1
type %2
那么運行C:\>t a.txt b.txt
%1 : 表示a.txt
%2 : 表示b.txt
于是上面的命令將順序地顯示a.txt和b.txt文件的內(nèi)容。
==== willsort 編注 =====================================================
參數(shù)在批處理中也作為變量處理, 所以同樣使用百分號作為引導(dǎo)符, 其后跟0-9中的一個數(shù)字構(gòu)成參數(shù)引用符. 引用符和參數(shù)之間 (例如上文中的 %1 與 a: ) 的關(guān)系類似于變量指針與變量值的關(guān)系. 當(dāng)我們要引用第十一個或更多個參數(shù)時, 就必須移動DOS 的參數(shù)起始指針. shift 命令正充當(dāng)了這個移動指針的角色, 它將參數(shù)的起始指針移動到下一個參數(shù), 類似C 語言中的指針操作. 圖示如下:
初始狀態(tài), cmd 為命令名, 可以用 %0 引用
cmd arg1 arg2 arg3 arg4 arg5 arg6 arg7 arg8 arg9 arg10
^ ^ ^ ^ ^ ^ ^ ^ ^ ^
%0 %1 %2 %3 %4 %5 %6 %7 %8 %9
經(jīng)過1次shift后, cmd 將無法被引用
cmd arg1 arg2 arg3 arg4 arg5 arg6 arg7 arg8 arg9 arg10
^ ^ ^ ^ ^ ^ ^ ^ ^ ^
%0 %1 %2 %3 %4 %5 %6 %7 %8 %9
經(jīng)過2次shift后, arg1也被廢棄, %9指向為空, 沒有引用意義
cmd arg1 arg2 arg3 arg4 arg5 arg6 arg7 arg8 arg9 arg10
^ ^ ^ ^ ^ ^ ^ ^ ^
%0 %1 %2 %3 %4 %5 %6 %7 %8
遺憾的是, win9x 和DOS下均不支持 shift 的逆操作. 只有在 nt 內(nèi)核命令行環(huán)境下, shift 才支持 /n 參數(shù), 可以以第一參數(shù)為基準(zhǔn)返復(fù)移動起始指針.
========================================================================
相關(guān)文章
最新萬能 DOS 啟動盤制作全攻略(軟盤+光盤+U盤+硬盤+NTFS+應(yīng)急實用工具)
這篇文章主要給大家介紹了關(guān)于最新萬能DOS啟動盤制作全攻略,軟盤+光盤+U盤+硬盤+NTFS+應(yīng)急實用工具的相關(guān)資料,需要的朋友可以參考下2006-12-12windows下定時利用bat腳本實現(xiàn)ftp上傳下載
這篇文章主要為大家詳細(xì)介紹了windows下定時利用bat腳本實現(xiàn)ftp上傳和下載,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-05-05BAT批處理實現(xiàn)軟件的自動安裝(以搜狗拼音為例)
這篇文章主要介紹了BAT批處理實現(xiàn)軟件的自動安裝(以搜狗拼音為例),本文以安裝搜狗拼音為例做個小實驗,其他軟件的安裝可以以此作為參考來實現(xiàn),需要的朋友可以參考下2015-06-06