轉自百度貼吧
批處理文件或批處理程序是一個包含若干MS-DOS命令的正文文件,擴展名為.BAT。當在命令提示符下敲入批處理程序的名稱時,MS-DOS成組執行此批處理程序中的命令。
任何在命令提示符下可使用的命令都可用在批處理程序中。此外,下面MS-DOS命令是專門在批處理程序中使用的。
<Call>???????? <If>
<Choice>???????? <Pause>
<Echo>???????? <Rem>
<For>?????????? <Shift>
<Goto>
================================================================
常用命令
echo、@、call、pause、rem(小技巧:用::代替rem)是批處理文件最常用的幾個命令,我們就從他們開始學起。
==== willsort 編注 ==============================================
首先, @ 不是一個命令, 而是DOS 批處理的一個特殊標記符, 僅用于屏蔽命令行回顯. 下面是DOS命令行或批處理中可能會見到的一些特殊標記符:
CR(0D)?? 命令行結束符
Escape(1B)?? ANSI轉義字符引導符
Space(20)?? 常用的參數界定符
Tab(09) ; =?? 不常用的參數界定符
+???? COPY命令文件連接符
* ??????? 文件通配符
""?????? 字符串界定符
|?????? 命令管道符
< > >>?? 文件重定向符
@?????? 命令行回顯屏蔽符
/?????? 參數開關引導符
:?????? 批處理標簽引導符
%?????? 批處理變量引導符
其次, :: 確實可以起到rem 的注釋作用, 而且更簡潔有效; 但有兩點需要注意:
第一, 除了 :: 之外, 任何以 :開頭的字符行, 在批處理中都被視作標號, 而直接忽略其后的所有內容, 只是為了與正常的標號相區別, 建議使用 goto 所無法識別的標號, 即在 :后緊跟一個非字母數字的一個特殊符號.
第二, 與rem 不同的是, ::后的字符行在執行時不會回顯, 無論是否用echo on打開命令行回顯狀態, 因為命令解釋器不認為他是一個有效的命令行, 就此點來看, rem 在某些場合下將比 :: 更為適用; 另外, rem 可以用于 config.sys 文件中.
================================================================
echo 表示顯示此命令后的字符
echo off 表示在此語句后所有運行的命令都不顯示命令行本身
@與echo off相象,但它是加在每個命令行的最前面,表示運行時不顯示這一行的命令行(只能影響當前行)。
call 調用另一個批處理文件(如果不用call而直接調用別的批處理文件,那么執行完那個批處理文件后將無法返回當前文件并執行當前文件的后續命令)。
pause 運行此句會暫停批處理的執行并在屏幕上顯示Press any key to continue...的提示,等待用戶按任意鍵后繼續
rem 表示此命令后的字符為解釋行(注釋),不執行,只是給自己今后參考用的(相當于程序中的注釋)。
==== willsort 編注 =============================================
此處的描述較為混亂, 不如直接引用個命令的命令行幫助更為條理
-----------------------------------------------------------------
??????????????? ECHO
當程序運行時,顯示或隱藏批處理程序中的正文。也可用于允許或禁止命令的回顯。
在運行批處理程序時,MS-DOS一般在屏幕上顯示(回顯)批處理程序中的命令。
使用ECHO命令可關閉此功能。
語法
ECHO [ON|OFF]
若要用echo命令顯示一條命令,可用下述語法:
echo [message]
參數
ON|OFF
指定是否允許命令的回顯。若要顯示當前的ECHO的設置,可使用不帶參數的ECHO
命令。
message
指定讓MS-DOS在屏幕上顯示的正文。
-----------------------------------------------------------------
??????????????? CALL
從一個批處理程序中調用另一個批處理程序,而不會引起第一個批處理的中止。
語法
CALL [drive:][path]filename [batch-parameters]
參數
[drive:][path]filename
指定要調用的批處理程序的名字及其存放處。文件名必須用.BAT作擴展名。
?
batch-parameters
指定批處理程序所需的命令行信息。
----------------------------------------------------------------------------
????????????? PAUSE
暫停批處理程序的執行并顯示一條消息,提示用戶按任意鍵繼續執行。只能在批處
理程序中使用該命令。
語法
PAUSE
----------------------------------------------------------------------------
??????????????? REM
在批處理文件或CONFIG.SYS中加入注解。也可用REM命令來屏蔽命令(在CONFIG.SYS
中也可以用分號(;)代替REM命令,但在批處理文件中則不能替代)。
語法
REM [string]
參數
string
指定要屏蔽的命令或要包含的注解。
================================================================
例1:用edit編輯a.bat文件,輸入下列內容后存盤為c:\a.bat,執行該批處理文件后可實現:將根目錄中所有文件寫入 a.txt中,啟動UCDOS,進入WPS等功能。
批處理文件的內容為: 命令注釋:
@echo off 不顯示后續命令行及當前命令行
dir c:\*.* >a.txt 將c盤文件列表寫入a.txt
call c:\ucdos\ucdos.bat 調用ucdos
echo 你好 顯示"你好"
pause 暫停,等待按鍵繼續
rem 準備運行wps 注釋:準備運行wps
cd ucdos 進入ucdos目錄
wps 運行wps
批處理文件的參數
批處理文件還可以像C語言的函數一樣使用參數(相當于DOS命令的命令行參數),這需要用到一個參數表示符“%”。
%[1-9]表示參數,參數是指在運行批處理文件時在文件名后加的以空格(或者Tab)分隔的字符串。變量可以從%0到%9,%0表示批處理命令本身,其它參數字符串用%1到%9順序表示。
例2:C:根目錄下有一批處理文件名為f.bat,內容為:
@echo off
format %1
如果執行C:\>f a:
那么在執行f.bat時,%1就表示a:,這樣format %1就相當于format a:,于是上面的命令運行時實際執行的是format a:
例3:C:根目錄下一批處理文件名為t.bat,內容為:
@echo off
type %1
type %2
那么運行C:\>t a.txt b.txt
%1 : 表示a.txt
%2 : 表示b.txt
于是上面的命令將順序地顯示a.txt和b.txt文件的內容。
特殊命令
if goto choice for是批處理文件中比較高級的命令,如果這幾個你用得很熟練,你就是批處理文件的專家啦。
一、if 是條件語句,用來判斷是否符合規定的條件,從而決定執行不同的命令。 有三種格式:
1、if [not] "參數" == "字符串" 待執行的命令
參數如果等于(not表示不等,下同)指定的字符串,則條件成立,運行命令,否則運行下一句。
例:if "%1"=="a" format a:
if 的命令行幫助中關于此點的描述為:
? IF [NOT] string1==string2 command
在此有以下幾點需要注意:
? 1. 包含字符串的雙引號不是語法所必須的, 而只是習慣上使用的一種"防空"字符
? 2. string1 未必是參數, 它也可以是環境變量, 循環變量以及其他字符串常量或變量
? 3. command 不是語法所必須的, string2 后跟一個空格就可以構成一個有效的命令行
================================================================
2、if [not] exist [路徑\]文件名 待執行的命令
如果有指定的文件,則條件成立,運行命令,否則運行下一句。
如: if exist c:\config.sys type c:\config.sys
表示如果存在c:\config.sys文件,則顯示它的內容。
****** willsort 編注 ********
也可以使用以下的用法:
? if exist <device> command
device 是指DOS系統中已加載的設備, 在win98下通常有:
? AUX, PRN, CON, NUL
? COM1, COM2, COM3, COM4
?
?? LPT1, LPT2, LPT3, LPT4
? XMSXXXX0, EMMXXXX0
? A: B: C: ...,
? CLOCK$, CONFIG$, DblBuff$, IFS$HLP$
具體的內容會因硬軟件環境的不同而略有差異, 使用這些設備名稱時, 需要保證以下三點:
? 1. 該設備確實存在(由軟件虛擬的設備除外)
? 2. 該設備驅動程序已加載(aux, prn等標準設備由系統缺省定義)
? 3. 該設備已準備好(主要是指a: b: ..., com1..., lpt1...等)
可通過命令 mem/d | find "device" /i 來檢閱你的系統中所加載的設備
另外, 在DOS系統中, 設備也被認為是一種特殊的文件, 而文件也可以稱作字符設備; 因為設備(device)與文件都是使用句柄(handle)來管理的, 句柄就是名字, 類似于文件名, 只不過句柄不是應用于磁盤管理, 而是應用于內存管理而已, 所謂設備加載也即指在內存中為其分配可引用的句柄.
================================================================
3、if errorlevel <數字> 待執行的命令
很多DOS程序在運行結束后會返回一個數字值用來表示程序運行的結果(或者狀態),通過if errorlevel命令可以判斷程序的返回值,根據不同的返回值來決定執行不同的命令(返回值必須按照從大到小的順序排列)。如果返回值等于指定的數字,則條件成立,運行命令,否則運行下一句。
如if errorlevel 2 goto x2
==== willsort 編注 ====================================================
返回值從大到小的順序排列不是必須的, 而只是執行命令為 goto 時的習慣用法, 當使用 set 作為執行命令時, 通常會從小到大順序排列, 比如需將返回碼置入環境變量, 就需使用以下的順序形式:
if errorlevel 1 set el=1
if errorlevel 2 set el=2
if errorlevel 3 set el=3
if errorlevel 4 set el=4
if errorlevel 5 set el=5
...
當然, 也可以使用以下循環來替代, 原理是一致的:
for %%e in (1 2 3 4 5 6 7 8...) do if errorlevel %%e set el=%%e
更高效簡潔的用法, 可以參考我寫的另一篇關于獲取 errorlevel 的文章
出現此種現象的原因是, if errorlevel 比較返回碼的判斷條件并非等于, 而是大于等于. 由于 goto 的跳轉特性, 由小到大排序會導致在較小的返回碼處就跳出; 而由于 set命令的 "重復" 賦值特性, 由大到小排序會導致較小的返回碼 "覆蓋" 較大的返回碼.
另外, 雖然 if errorlevel=<數字> command 也是有效的命令行, 但也只是 command.com 解釋命令行時將 = 作為命令行切分符而忽略掉罷了
================================================================
二、goto 批處理文件運行到這里將跳到goto所指定的標號(標號即label,標號用:后跟標準字符串來定義)處,goto語句一般與if配合使用,根據不同的條件來執行不同的命令組。
如:
goto end
:end
echo this is the end
標號用“:字符串”來定義,標號所在行不被執行。
==== willsort 編注 ====================================================
label 常被譯為 "標簽" , 但是這并不具有廣泛的約定性.
goto <label> 與 :<label> 聯用可實現執行中途的跳轉, 再結合 if 可實現執行過程的條件分支, 多個 if 即可實現命令的分組, 類似 C 中 switch case 結構或者 Basic 中的 select case 結構, 大規模且結構化的命令分組即可實現高級語言中的函數功能. 以下是批處理和C/Basic在語法結構上的對照:
? Batch?????????? C / Basic
? goto&:?????????? goto&:
? goto&:&if???????? if{}&else{} / if&elseif&endif
? goto&:&if...?????? switch&case / select case
? goto&:&if&set&envar...?? function() / function(),sub()
================================================================
三、choice 使用此命令可以讓用戶輸入一個字符(用于選擇),從而根據用戶的選擇返回不同的errorlevel,然后于if errorlevel配合,根據用戶的選擇運行不同的命令。
?
?注意:choice命令為DOS或者Windows系統提供的外部命令,不同版本的choice命令語法會稍有不同,請用choice /?查看用法。
choice的命令語法(該語法為Windows 2003中choice命令的語法,其它版本的choice的命令語法與此大同小異):
CHOICE [/C choices] [/N] [/CS] [/T timeout /D choice] [/M text]
描述:
該工具允許用戶從選擇列表選擇一個項目并返回所選項目的索引。
參數列表:
/C?? choices?? 指定要創建的選項列表。默認列表是 "YN"。
/N???????? 在提示符中隱藏選項列表。提示前面的消息得到顯示,
??????? 選項依舊處于啟用狀態。
/CS?????? 允許選擇分大小寫的選項。在默認情況下,這個工具
??????? 是不分大小寫的。
/T?? timeout?? 做出默認選擇之前,暫停的秒數。可接受的值是從 0
??????? 到 9999。如果指定了 0,就不會有暫停,默認選項
??????? 會得到選擇。
/D?? choice?? 在 nnnn 秒之后指定默認選項。字符必須在用 /C 選
??????? 項指定的一組選擇中; 同時,必須用 /T 指定 nnnn。
/M?? text???? 指定提示之前要顯示的消息。如果沒有指定,工具只
??????? 顯示提示。
/????????? 顯示幫助消息。
注意:
ERRORLEVEL 環境變量被設置為從選擇集選擇的鍵索引。列出的第一個選
擇返回 1,第二個選擇返回 2,等等。如果用戶按的鍵不是有效的選擇,
該工具會發出警告響聲。如果該工具檢測到錯誤狀態,它會返回 255 的
ERRORLEVEL 值。如果用戶按 Ctrl+Break 或 Ctrl+C 鍵,該工具會返回 0
的 ERRORLEVEL 值。在一個批程序中使用 ERRORLEVEL 參數時,將參數降
序排列。
示例:
CHOICE /?
CHOICE /C YNC /M "確認請按 Y,否請按 N,或者取消請按 C。"
CHOICE /T 10 /C ync /CS /D y
CHOICE /C ab /M "選項 1 請選擇 a,選項 2 請選擇 b。"
CHOICE /C ab /N /M "選項 1 請選擇 a,選項 2 請選擇 b。"
==== willsort 編注 ====================================================
我列出win98下choice的用法幫助, 已資區分
Waits for the user to choose one of a set of choices.
等待用戶選擇一組待選字符中的一個
CHOICE [/C[:]choices] [/N] [/S] [/T[:]c,nn] [text]
/C[:]choices Specifies allowable keys. Default is YN
??? 指定允許的按鍵(待選字符), 默認為YN
/N???? Do not display choices and ? at end of prompt string.
??? 不顯示提示字符串中的問號和待選字符
/S???? Treat choice keys as case sensitive.
??? 處理待選字符時大小寫敏感
/T[:]c,nn?? Default choice to c after nn seconds
??? 在 nn 秒后默認選擇 c
text???? Prompt string to display
??? 要顯示的提示字符串
ERRORLEVEL is set to offset of key user presses in choices.
ERRORLEVEL 被設置為用戶鍵入的字符在待選字符中的偏移值
================================================================
如果我運行命令:CHOICE /C YNC /M "確認請按 Y,否請按 N,或者取消請按 C。"
屏幕上會顯示:
確認請按 Y,否請按 N,或者取消請按 C。 [Y,N,C]?
例:test.bat的內容如下(注意,用if errorlevel判斷返回值時,要按返回值從高到低排列):
@echo off
choice /C dme /M "defrag,mem,end"
if errorlevel 3 goto end
if errorlevel 2 goto mem
if errorlevel 1 goto defrag
:defrag
c:\dos\defrag
goto end
:mem
mem
goto end
:end
echo good bye
此批處理運行后,將顯示“defrag,mem,end[D,M,E]?” ,用戶可選擇d m e ,然后if語句根據用戶的選擇作出判斷,d表示執行標號為defrag的程序段,m表示執行標號為mem的程序段,e表示執行標號為end的程序段,每個程序段最后都以goto end將程序跳到end標號處,然后程序將顯示good bye,批處理運行結束。
?
?四、for 循環命令,只要條件符合,它將多次執行同一命令。
語法:
對一組文件中的每一個文件執行某個特定命令。
FOR %%variable IN (set) DO command [command-parameters]
%%variable 指定一個單一字母可替換的參數。
(set)?? 指定一個或一組文件。可以使用通配符。
command?? 指定對每個文件執行的命令。
command-parameters
??? 為特定命令指定參數或命令行開關。
例如一個批處理文件中有一行:
for %%c in (*.bat *.txt) do type %%c
則該命令行會顯示當前目錄下所有以bat和txt為擴展名的文件的內容。
==== willsort 編注 ====================================================
需要指出的是, 當()中的字符串并非單個或多個文件名時, 它將單純被當作字符串替換, 這個特性再加上()中可以嵌入多個字符串的特性, 很明顯 for 可以被看作一種遍歷型循環.
當然, 在 nt/2000/xp/2003 系列的命令行環境中, for 被賦予了更多的特性, 使之可以分析命令輸出或者文件中的字符串, 也有很多開關被用于擴展了文件替換功能.
================================================================
批處理示例
1. IF-EXIST
1) 首先用記事本在C:\建立一個test1.bat批處理文件,文件內容如下:
@echo off
IF EXIST \AUTOEXEC.BAT TYPE \AUTOEXEC.BAT
IF NOT EXIST \AUTOEXEC.BAT ECHO \AUTOEXEC.BAT does not exist
然后運行它:
C:\>TEST1.BAT
如果C:\存在AUTOEXEC.BAT文件,那么它的內容就會被顯示出來,如果不存在,批處理就會提示你該文件不存在。
2) 接著再建立一個test2.bat文件,內容如下:
@ECHO OFF
IF EXIST \%1 TYPE \%1
IF NOT EXIST \%1 ECHO \%1 does not exist
執行:
C:\>TEST2 AUTOEXEC.BAT
該命令運行結果同上。
說明:
(1) IF EXIST 是用來測試文件是否存在的,格式為
IF EXIST [路徑+文件名] 命令
(2) test2.bat文件中的%1是參數,DOS允許傳遞9個批參數信息給批處理文件,分別為%1~%9(%0表示test2命令本身) ,這有點象編程中的實參和形參的關系,%1是形參,AUTOEXEC.BAT是實參。
==== willsort 編注 ====================================================
DOS沒有 "允許傳遞9個批參數信息" 的限制, 參數的個數只會受到命令行長度和所調用命令處理能力的限制. 但是, 我們在批處理程序中, 在同一時刻只能同時引用10個參數, 因為 DOS只給出了 %0~%9這十個參數引用符.
================================================================
3) 更進一步的,建立一個名為TEST3.BAT的文件,內容如下:
@echo off
IF "%1" == "A" ECHO XIAO
IF "%2" == "B" ECHO TIAN
IF "%3" == "C" ECHO XIN
如果運行:
C:\>TEST3 A B C
屏幕上會顯示:
XIAO
TIAN
XIN
如果運行:
C:\>TEST3 A B
屏幕上會顯示
XIAO
TIAN
在這個命令執行過程中,DOS會將一個空字符串指定給參數%3。
2、IF-ERRORLEVEL
建立TEST4.BAT,內容如下:
@ECHO OFF
XCOPY C:\AUTOEXEC.BAT D:\
IF ERRORLEVEL 1 ECHO 文件拷貝失敗
IF ERRORLEVEL 0 ECHO 成功拷貝文件
然后執行文件:
C:\>TEST4
如果文件拷貝成功,屏幕就會顯示“成功拷貝文件”,否則就會顯示“文件拷貝失敗”。
IF ERRORLEVEL 是用來測試它的上一個DOS命令的返回值的,注意只是上一個命令的返回值,而且返回值必須依照從大到小次序順序判斷。
因此下面的批處理文件是錯誤的:
@ECHO OFF
XCOPY C:\AUTOEXEC.BAT D:\
IF ERRORLEVEL 0 ECHO 成功拷貝文件
IF ERRORLEVEL 1 ECHO 未找到拷貝文件
IF ERRORLEVEL 2 ECHO 用戶通過ctrl-c中止拷貝操作
IF ERRORLEVEL 3 ECHO 預置錯誤阻止文件拷貝操作
IF ERRORLEVEL 4 ECHO 拷貝過程中寫盤錯誤
無論拷貝是否成功,后面的:
未找到拷貝文件
用戶通過ctrl-c中止拷貝操作
?
?預置錯誤阻止文件拷貝操作
拷貝過程中寫盤錯誤
都將顯示出來。
以下就是幾個常用命令的返回值及其代表的意義:
backup
0 備份成功
1 未找到備份文件
2 文件共享沖突阻止備份完成
3 用戶用ctrl-c中止備份
4 由于致命的錯誤使備份操作中止
diskcomp
0 盤比較相同
1 盤比較不同
2 用戶通過ctrl-c中止比較操作
3 由于致命的錯誤使比較操作中止
4 預置錯誤中止比較
diskcopy
0 盤拷貝操作成功
1 非致命盤讀/寫錯
2 用戶通過ctrl-c結束拷貝操作
3 因致命的處理錯誤使盤拷貝中止
4 預置錯誤阻止拷貝操作
format
0 格式化成功
3 用戶通過ctrl-c中止格式化處理
4 因致命的處理錯誤使格式化中止
5 在提示“proceed with format(y/n)?”下用戶鍵入n結束
xcopy
0 成功拷貝文件
1 未找到拷貝文件
2 用戶通過ctrl-c中止拷貝操作
4 預置錯誤阻止文件拷貝操作
5 拷貝過程中寫盤錯誤
==== willsort 編注 ====================================================
chkdsk
0?? 未找到錯誤
255 找到一個或多個錯誤
choice
0?? 用戶按下ctrl+c/break
1?? 用戶按下第一個鍵
255 檢測到命令行中的錯誤條件
其它 用戶按下的有效字符在列表中的位置
defrag
0?? 碎片壓縮成功
1?? 出現內部錯誤
2?? 磁盤上沒有空簇。要運行DEFRAG,至少要有一個空簇
3?? 用戶用Ctrl+C退出了DEFRAG
4?? 出現一般性錯誤
5?? DEFRAG在讀簇時遇到錯誤
6?? DEFRAG在寫簇時遇到錯誤
7?? 分配空間有錯
8?? 內存錯
9?? 沒有足夠空間來壓縮磁盤碎片
deltree
0?? 成功地刪除一個目錄
diskcomp
0?? 兩盤相同
1?? 發現不同
2?? 按CTRL+C 終止了比較
3?? 出現嚴重錯誤
4?? 出現初始化錯誤
find
0?? 查找成功且至少找到了一個匹配的字符串
1?? 查找成功但沒找到匹配的字符串
2?? 查找中出現了錯誤
keyb
0?? 鍵盤定義文件裝入成功
1?? 使用了非法的鍵盤代碼,字符集或語法
2?? 鍵盤定義文件壞或未找到
4?? 鍵盤、監視器通訊時出錯
5?? 要求的字符集未準備好
move
0?? 成功地移動了指定的文件
1?? 發生了錯誤
msav /N
86?? 檢查到了病毒
replace
0?? REPLACE成功地替換或加入了文件
1?? MS-DOS版本和REPLACE不兼容
2?? REPLACE找不到源文件
3?? REPLACE找不到源路徑或目標路徑
5?? 不能存取要替換的文件
8?? 內存不夠無法執行REPLACE
11?? 命令行句法錯誤
restore
0?? RESTORE成功地恢復了文件
1?? RESTORE找不到要恢復的文件
3?? 用戶按CTRL+C終止恢復過程
4?? RESTORE因錯誤而終止
scandisk
0?? ScanDisk在它檢查的驅動器上未檢測到任何錯誤
1?? 由于命令行的語法不對,不能運行ScanDisk
2?? 由于內存用盡或發生內部錯誤,ScanDisk意外終止
3?? 用戶讓ScanDisk中途退出
4?? 進行盤面掃描時,用戶決定提前退出
254 ScanDisk找到磁盤故障并已全部校正
255 ScanDisk找到磁盤故障,但未能全部校正
setver
0?? SETVER成功地完成了任務
1?? 用戶指定了一個無效的命令開關
2?? 用戶指定了一個非法的文件名
3?? 沒有足夠的系統內存來運行命令
4?? 用戶指定了一個非法的版本號格式
5?? SETVER在版本表中未找到指定的項
6?? SETVER未找到SETVER.EXE文件
7?? 用戶指定了一個非法的驅動器
8?? 用戶指定了太多的命令行參數
9?? SETVER檢測到丟失了命令行參數
10?? 在讀SETVER.EXE文件時,SETVER檢測到發生錯誤
11?? SETVER.EXE文件損壞
12?? 指定的SETVER.EXE文件不支持版本表
13?? 版本表中沒有足夠的空間存放新的項
14?? 在寫SETVER.EXE文件時SETVER檢測到發生錯誤
================================================================
3、IF STRING1 == STRING2
建立TEST5.BAT,文件內容如下:
@echo off
IF "%1" == "A" FORMAT A:
執行:
C:\>TEST5 A
屏幕上就出現是否將A:盤格式化的內容。
注意:為了防止參數為空的情況,一般會將字符串用雙引號(或者其它符號,注意不能使用保留符號)括起來。
如:if [%1]==[A] 或者 if %1*==A*
5、GOTO
建立TEST6.BAT,文件內容如下:
@ECHO OFF
IF EXIST C:\AUTOEXEC.BAT GOTO _COPY
GOTO _DONE
:_COPY
COPY C:\AUTOEXEC.BAT D:\
:_DONE
注意:
(1) 標號前是ASCII字符的冒號":",冒號與標號之間不能有空格。
(2) 標號的命名規則與文件名的命名規則相同。
(3) DOS支持最長八位字符的標號,當無法區別兩個標號時,將跳轉至最近的一個標號。
==== willsort 編注 ====================================================
1)標號也稱作標簽(label)
2)標簽不能以大多數的非字母數字字符開始, 而文件名中則可以使用很多
3)當無法區別兩個標簽時, 將跳轉至位置最靠前的標簽
================================================================
6、FOR
建立C:\TEST7.BAT,文件內容如下:
@ECHO OFF
FOR %%C IN (*.BAT *.TXT *.SYS) DO TYPE %%C
運行:
C:\>TEST7
執行以后,屏幕上會將C:盤根目錄下所有以BAT、TXT、SYS為擴展名的文件內容顯示出來(不包括隱藏文件)。?
?