dos/bat批處理教程——第一部分:批處理的專用命令

第一部分:批處理的專用命令

批處理文件是將一系列命令按必定的順序集合爲一個可執行的文本文件,其擴展名爲BAT。這些命令統稱批處理命令,下面我就來給你們介紹一下批處理的命令。
一、 REM
REM 是個註釋命令通常是用來給程序加上註解的,該命令後的內容在程序執行的時候將不會被顯示和執行。例:
REM 你如今看到的就是註解,這一句將不會被執行。在之後的例子中解釋的內容都REM 會放在REM後面。請你們注意。

二、 ECHO
ECHO 是一個回顯命令主要參數有OFF和 ON,通常用ECHO message來顯示一個特定的消息 。例:
Echo off
Rem 以上表明關閉回顯即不顯示所執行的命令
Echo 這個就是消息。
Rem 以上表明顯示「這就是消息」這列字符
執行結果:
C:\>ECHO.BAT
這個就是消息。

三、 GOTO
GOTO 即爲跳轉的意思。在批處理中容許以「:XXX」來構建一個標號而後用GOTO :標號直接來執行標號後的命令。例
:LABEL
REM 上面就是名爲LABEL的標號。
DIR C:\
DIR D:\
GOTO LABEL
REM 以上程序跳轉標號LABEL處繼續執行。

四、CALL
CALL 命令能夠在批處理執行過程當中調用另外一個批處理,當另外一個批處理執行完後再繼續執行原來的批處理。例:
批處理2.BAT內容以下:
ECHO 這就是2的內容
批處理1.BAT內容以下:
ECHO 這是1的內容
CALL 2.BAT
ECHO 1和2的內容所有顯示完成
執行結果以下:
C:\>1.BAT
這是1的內容
這就是2的內容
1和2的內容所有顯示完成

五、PAUSE
PAUSE 中止系統命令的執行並顯示下面的內容。例:
C:\> PAUSE
請按任意鍵繼續 . . .

六、 IF
IF 條件判斷語句,語法格式以下:
IF [NOT] ERRORLEVEL number command
IF [NOT] string1==string2 command
IF [NOT] EXIST filename command
說明:
[NOT] 將返回的結果取反值即「若是沒有」的意思。
ERRORLEVEL 是命令執行完成後返回的退出值
Number 退出值的數字取值範圍0~255。判斷時值的排列順序應該又大到小。返回的值大於或等於指定的值時條件成立。
string1==string2 string1和string2都爲字符的數據,英文字符的大小寫將看作不一樣,這個條件中的等於號必須是2個(絕對相等),條件想等後即執行後面的 command
EXIST filename 爲文件或目錄存在的意思。
IF ERRORLEVEL這條語句必須放在某一個命令後面。執行命令後由IF ERRORLEVEL來判斷命令的返回值。
例:
一、 IF [NOT] ERRORLEVEL number command
檢測命令執行完後的返回值作出判斷。
echo off
dir z:
rem 若是退出代碼爲1(不成功)就跳至標題1處執行
IF ERRORLEVEL 1 goto 1
rem 若是退出代碼爲0(成功)就跳至標題0處執行
IF ERRORLEVEL 0 goto 0
:0
echo 命令執行成功!
Rem 程序執行完畢跳至標題exit處退出
goto exit
:1
echo 命令執行失敗!
Rem 程序執行完畢跳至標題exit處退出
goto exit
:exit
Rem 這裏是程序的出口
二、 IF string1==string2 command
檢測當前變量的值作出判斷
ECHO OFF
IF %1==2 goto no
Echo 變量相等!
Goto exit
:no
echo 變量不相等
goto exit
:exit
你們能夠這樣看效果 C:\>test.bat 數字

三、 IF [NOT] EXIST filename command
發現特定的文件作出判斷
echo off
IF not EXIST autoexec.bat goto 1
echo 文件存在成功!
goto exit
:1
echo 文件不存在失敗!
goto exit
:exit
這個批處理你們能夠放在c盤和d盤分別執行看看效果。
七、 FOR
FOR這個命令比較特殊是一個循環執行命令的命令,同時FOR的循環裏面還能夠套用FOR在進行循環。這篇咱們介紹基本的用法就不作套用的循環了,後面再來說解套用的循環。在批處理中FOR的命令以下:
FOR [%%c] IN (set) DO [command] [arguments]
在命令行中命令以下:
FOR [%c] IN (set) DO [command] [arguments]
經常使用參數:
/L 該集表示以增量形式從開始到結束的一個數字序列。所以,(1,1,5) 將產生序列 1 2 3 4 5,(5,-1,1) 將產生序列 (5 4 3 2 1)。
/D 若是集中包含通配符,則指定與目錄名匹配,而不與文件名匹配。

/F 從指定的文件中讀取數據做爲變量
eol=c - 指一個行註釋字符的結尾(就一個)
skip=n - 指在文件開始時忽略的行數。
delims=xxx - 指分隔符集。這個替換了空格和跳格鍵的默認分隔符集。
tokens=x,y,m-n - 指每行的哪個符號被傳遞到每一個迭代的 for 自己。這會致使額外變量名稱的分配。m-n格式爲一個範圍。經過 nth 符號指定 mth。若是符號字符串中的最後一個字符星號,那麼額外的變量將在最後一個符號解析以後分配並接受行的保留文本。
usebackq - 指定新語法已在下類狀況中使用:在做爲命令執行一個後引號的字符串而且一個單引號字符爲文字字符串命令並容許在 filenameset中使用雙引號擴起文件名稱。
下面來看一個例子:
FOR /F "eol=; tokens=2,3* delims=, " %i in (myfile.txt) do @echo %i %j %k
會分析 myfile.txt 中的每一行,忽略以分號打頭的那些行,將每行中的第二個和第三個符號傳遞給 for 程序體;用逗號和/或空格定界符號。請注意,這個 for 程序體的語句引用 %i 來取得第二個符號,引用 %j 來取得第三個符號,引用 %k來取得第三個符號後的全部剩餘符號。對於帶有空格的文件名,您須要用雙引號將文件名括起來。爲了用這種方式來使用雙引號,您還須要使用 usebackq 選項,不然,雙引號會被理解成是用做定義某個要分析的字符串的。
%i 專門在 for 語句中獲得說明,%j 和 %k 是經過tokens= 選項專門獲得說明的。您能夠經過 tokens= 一行指定最多 26 個符號,只要不試圖說明一個高於字母 'z' 或'Z' 的變量。請記住,FOR 變量名分大小寫,是通用的;並且,同時不能有 52 個以上都在使用中。
您還能夠在相鄰字符串上使用 FOR /F 分析邏輯;方法是,用單引號將括號之間的 filenameset 括起來。這樣,該字符串會被看成一個文件中的一個單一輸入行。最後,您能夠用 FOR /F 命令來分析命令的輸出。方法是,將括號之間的 filenameset 變成一個反括字符串。該字符串會被看成命令行,傳遞到一個子 CMD.EXE,其輸出會被抓進內存,並被看成文件分析。所以,如下例子:
FOR /F "usebackq delims==" %i IN (`set`) DO @echo %i
會枚舉當前環境中的環境變量名稱。
如下列舉一個簡單的例子,他將說明參數/L和沒有參數的區別:
刪除文件1.TXT 2.TXT 3.TXT 4.TXT 5.TXT
例:
ECHO OFF
FOR /L %%F IN (1,1,5) DO DEL %%F.TXT

FOR %%F IN (1,2,3,4,5) DO DEL %%F.TXT
以上2條命令執行的結果都是同樣的以下:
C:\>DEL 1.TXT
C:\>DEL 2.TXT
C:\>DEL 3.TXT
C:\>DEL 4.TXT
C:\>DEL 5.TXT

八、 SETLOCAL
開始批處理文件中環境改動的本地化操做。在執行 SETLOCAL 以後
所作的環境改動只限於批處理文件。要還原原先的設置,必須執
行 ENDLOCAL。 達到批處理文件結尾時,對於該批處理文件的每一個
還沒有執行的 SETLOCAL 命令,都會有一個隱含的 ENDLOCAL 被
執行。例:
@ECHO OFF
SET PATH /*察看環境變量PATH
PAUSE
SETLOCAL
SET PATH=E:\TOOLS /*從新設置環境變量PATH
SET PATH
PAUSE
ENDLOCAL
SET PATH
從上例咱們能夠看到環境變量PATH第1次被顯示得時候是系統默認路徑。被設置成了E:\TOOLS後顯示爲E:\TOOLS但當ENDLOCAL後咱們能夠看到他又被還原成了系統的默認路徑。但這個設置只在該批處理運行的時候有做用。當批處理運行完成後環境變量PATH將會還原。

九、 SHIFT SHIFT命令可讓在命令上的的命令使用超過10個(%0~%9)以上的可替代參數例: ECHO OFF ECHO %1 %2 %3 %4 %5 %6 %7 %8 %9 SHIFT ECHO %1 %2 %3 %4 %5 %6 %7 %8 %9 SHIFT ECHO %1 %2 %3 %4 %5 %6 %7 %8 %9 執行結果以下: C::\>SHIFT.BAT 1 2 3 4 5 6 7 8 9 10 11 1 2 3 4 5 6 7 8 9 2 3 4 5 6 7 8 9 10 3 4 5 6 7 8 9 10 11 以上就是基於WIN2000下的9個批處理命令。
相關文章
相關標籤/搜索