批處理檔案

批處理檔案

批處理,顧名思義就是進行批量的處理。批處理檔案是擴展名為·bat 或·cmd的文本檔案,包含一條或多條命令,由DOS或Windows系統內嵌的命令解釋器來解釋運行。

基本介紹

  • 中文名:批處理檔案
  • 外文名:BATCH
  • 常見後綴:·bat 或·cmd
  • 運行平台:DOS或Windows系統
  • 特點:無格式的文本檔案
  • 作用:簡化日常或重複性任務
  • 本質:DOS命令按序排列形成的集合
  • 調用方式:CMD
  • 高級命令:if、choice、for
基本信息,內容,常用命令,說明,echo 命令,@命令符,call命令,rem 命令,pause 命令,start 命令,goto 命令,set 命令,高級命令,說明,if命令,choice命令,for命令,

基本信息

批處理檔案是無格式的文本檔案。在命令提示下鍵入批處理檔案的名稱,或者雙擊該批處理檔案,系統就會調用Cmd.exe按照該檔案中各個命令出現的順序來逐個運行它們。使用批處理檔案(也被稱為批處理程式腳本),可以簡化日常或重複性任務。
批處理的本質,是一堆DOS命令按一定順序排列而形成的集合。
批處理,也稱為批處理腳本,英文譯為BATCH,批處理檔案後綴BAT就取的前三個字母。它的構成沒有固定格式,只要遵守以下這條就ok了:每一行可視為一個命令,每個命令里可以含多條子命令,從第一行開始執行,直到最後一行結束,它運行的平台是DOS。批處理有一個很鮮明的特點:使用方便、靈活,功能強大,自動化程度高。
比如,在啟動wps軟體時,每次都必須執行
C:\>cd wps
C:\WPS>spdos
C:\WPS>py
C:\WPS>wbx
C:\WPS>wps
如果每次用WPS之前都這樣執行一次,比較繁瑣。
如果有一個方法,只需編寫一個批處理檔案,就會自動執行剛才的所有命令,這樣就將工作簡單化,帶來便利。
此外電腦每次啟動時都會尋找autoexec.bat這條批處理檔案,從而可執行一些每次開機都要執行的命令,如設定路徑path、載入滑鼠驅動mouse、磁碟加速smartdrv等,可以使您的電腦真正自動化。
echo、@、call、pause、rem 是批處理檔案最常用的幾個命令,我們就從他們開始學起。 echo 表示顯示此命令後的字元
echo off 表示在此語句後所有運行的命令都不顯示命令行本身
@ 與echo off相象,但它是加在其它命令行的最前面,表示運行時不顯示命令行本身。
call 調用另一條批處理檔案(如果直接調用別的批處理檔案 ,執行完那條命令後將無法執行當前檔案後續命令)
pause 運行此句會暫停,顯示Press any key to continue... 等待用戶按任意鍵後繼續
rem 表示此命令後的字元為解釋行,不執行,只是給自己今後查找用的
例:用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語言一樣使用參數,這只需用到一個參數表示符%。
%表示參數,參數是指在運行批處理檔案時在檔案名稱後加的字元串。變數可以從 %0到%9,%0表示檔案名稱本身,字元串用%1到%9順序表示。
例如,C:根目錄下一批處理檔案名稱為f.bat,內容為 format %1
則如果執行C:\>f a: 則實際執行的是format a:
又如C:根目錄下一批處理檔案的名為t.bat,內容為 type %1 type %2
那么運行C:\>t a.txt b.txt 將順序地顯示a.txt和b.txt檔案的內容
if goto choice for 是批處理檔案中比較高級的命令,如果這幾個你用得很熟練,你就是批處理檔案的專家啦。
if 表示將判斷是否符合規定的條件,從而決定執行不同的命令。 有三種格式:
1、if "參數" == "字元串" 待執行的命令
參數如果等於指定的字元串,則條件成立,運行命令,否則運行下一句。(注意是兩個等號)
如if "%1"=="a" format a:
2、if exist 檔案名稱 待執行的命令
如果有指定的檔案,則條件成立,運行命令,否則運行下一句。如if exist config.sysedit config.sys
3、if errorlevel 數字 待執行的命令
如果返回碼等於指定的數字,則條件成立,運行命令,否則運行下一句。如if errorlevel 2 goto x2 DOS程式運行時都會返回一個數字給DOS,稱為錯誤碼errorlevel或稱返回碼
goto 批處理檔案運行到這裡將跳到goto 所指定的標號處, 一般與if配合使用。 如:
goto end
:end
echo this is the end
標號用 :字元串 表示,標號所在行不被執行
choice 使用此命令可以讓用戶輸入一個字元,從而運行不同的命令。使用時應該加/c:參數,c:後應寫提示可輸入的字元,之間無空格。它的返回碼為1234……
如: choice /c:dme defrag,mem,end
將顯示
defrag,mem,end[D,M,E]?
例如,test.bat的內容如下:
@echo off
choice /c:dme defrag,mem,end
if errorlevel 3 goto defrag 應先判斷數值最高的錯誤碼
if errorlevel 2 goto mem
if errotlevel 1 goto end
: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 [%%f] in (集合) DO [命令]
只要參數f在指定的集合內,則條件成立,執行命令
如果一條批處理檔案中有一行:
for %%c in (*.bat *.txt) do type %%c
含義是如果是以bat或txt結尾的檔案,則顯示檔案的內容。
autoexec.bat
DOS在啟動會自動運行autoexec.bat這條檔案,一般我們在裡面裝載每次必用的程式,如: path(設定路徑)、smartdrv(磁碟加速)、 mouse(滑鼠啟動)、mscdex(光碟機連線)、 doskey(鍵盤管理)、set(設定環境變數)等。
如果啟動盤根目錄中沒有這個檔案,電腦會讓用戶輸入日期和時間。
例如,一個典型的autoexec.bat內容如下:
@echo off 不顯示命令行
prompt $p$g 設定提示符前有目錄提示
path c:\dos;c:\;c:\windows;c:\ucdos;c:\tools 設定路徑
lh c:\dos\doskey.com載入鍵盤管理
lh c:\mouse\mouse.com 載入滑鼠管理
lh c:\dos\smartdrv.exe 載入磁碟加速管理
lh c:\dos\mscdex /S /D:MSCD000 /M:12 /V 載入CD-ROM驅動
set temp=c:\temp 設定臨時目錄

常用命令

說明

echo、@、call、rem、pause 、goto、set是批處理檔案最常用的幾個命令。

echo 命令

打開回顯或關閉請求回顯功能,或顯示訊息。如果沒有任何參數,echo 命令將顯示當前回顯設定。
語法
echo [{on|off}] [message]
Sample:@echo off / echo hello world
在實際套用中我們會把這條命令和重定向符號(也稱為管道符號,一般用> >> ^)結合來實現輸入一
些命令到特定的檔案中。

@命令符

@與echo off功能相似,但它是加在其他命令行的最前面,表示運行時不顯示命令行本身。
舉例:
----------------------------------------------------------------------------------------------------
@echo off
@echo Now initializing the program,please wait a minite...
@format X: /q/u/autoset //format命令不可以使用/y參數,但可以使用autoset這個
//參數,效果和y是一樣的
----------------------------------------------------------------------------------------------------

call命令

call命令用於從一個批處理程式調用另一個批處理程式,而不終止父批處理程式。call命令提示接受用作調用目標的標籤。如果再腳本或批處理檔案外使用call命令,則其不會在命令行起作用。
語法:
call [[Drive:][Path] FileName [Bathparameters]] [:labe] [Arguments]]
參數:
[Drive:][Path] FileName
指定要調用的批處理程式的位置和名稱。FileName參數必須有.bat或.cmd擴展名。
Batchparameters
指定批處理程式所需的任何命令行信息,包括命令行選項、檔案名稱、批處理參數(即從%0到%9)或變數(例如,%baud%)。
:Label
指定批處理程式要跳轉到的標籤。使用帶有該參數的call命令,可以創建新的批處理檔案上下文,並將控制權交給指定標籤後的語句。首先遇到該處理檔案的末尾時(在跳轉到標籤後),控制權將交還給call語句後的語句。第二次遇到批處理檔案的末尾時,將推出批處理腳本
Arguments
對於以:Label開始的批處理程式,指定要傳遞給其新實例的所有命令行信息,包括命令行選項、檔案名稱、批處理參數(即從%1到%9)或變數(例如,%baud%)。
舉例:
要從其他批處理程式運行checknew.bat程式,請在父批處理程式中輸入以下命令:
----------------------------------------------------------------------------------------------------
call checknew
----------------------------------------------------------------------------------------------------
如果父批處理程式接受兩個批處理參數並且希望將這些參數傳遞給checknew.bat,則可以在父批處理程式中使用以下命令:
----------------------------------------------------------------------------------------------------
call checknew %1 %2
----------------------------------------------------------------------------------------------------

rem 命令

注釋命令,類似於在C語言中的/*--------*/,它並不會被執行,只是起一個注釋的作用,便於別人閱讀
和你自己日後修改。
:: 也具有rem的功能
Rem Message
Sample:@Rem Here is the description.

pause 命令

暫停命令。運行 Pause 命令時,將顯示下面的訊息:
Press any key to continue. . .(或:請按任意鍵繼續. . .)
Sample:
@echo off
:begin
copy G:*.* d:\back
echo 請插入另一張光碟...
pause
goto begin
在這個例子中,驅動器 G 中磁碟上的所有檔案均複製到d:\back中。顯示的注釋提示您將另一張光碟
盤放入驅動器 G 時,pause 命令會使程式掛起,以便您更換光碟,然後按任意鍵繼續處理。

start 命令

調用外部程式,所有的DOS命令命令行程式都可以由start命令來調用。
如:start calc.exe即可打開Windows的計算器。
常用參數:
MIN 開始時視窗最小化
SEPARATE 在分開的空間內開始 16 位 Windows 程式
HIGH 在 HIGH 優先權類別開始應用程式
REALTIME 在 REALTIME 優先權類別開始應用程式
WAIT 啟動應用程式並等候它結束
parameters 這些為傳送到命令/程式的參數
執行的應用程式是 32-位 GUI 應用程式時,CMD.EXE 不等應用程式終止就返回命令提示。如果在命令
腳本內執行,該新行為則不會發生。

goto 命令

跳轉命令。程式指針跳轉到指定的標籤,從標籤後的第一條命令開始繼續執行批處理程式
語法:
goto label
參數:
label
指定所要轉向的批處理程式中的行。
Sample:
if {%1}=={} goto noparms
if {%2}=={} goto noparms(如果這裡的if、%1、%2你不明白的話,先跳過去,後面會有詳細的解釋
。)
@Rem check parameters if null show usage
:noparms
echo Usage: monitor.bat ServerIP PortNumber
goto end
標籤的名字可以隨便起,但是最好是有意義的字母啦,字母前加個:用來表示這個字母是標籤,goto
命令就是根據這個:來尋找下一步跳到到那裡。最好有一些說明這樣你別人看起來才會理解你的意圖啊。

set 命令

顯示、設定或刪除變數
顯示變數:set 或 set s 前者顯示批處理當前已定義的所有變數及其值,後者顯示所有以s開頭的變數及值。
設定變數:set aa=abcd 此句命令便可向變數aa賦值abcd。如果變數aa已被定義,則aa的值被修改為abcd;若aa尚未定義,則此句命令即可定義新的變數aa,同時為變數aa賦予初始值abcd。
刪除變數:set aa= 此句命令即可刪除變數aa。若變數aa已被定義,則刪除變數aa;若aa尚未定義,則此句命令沒實質意義。
需要說明的是,批處理中的變數是不區分類型的,不需要像C語言中的變數那樣還要區分int、float、char等。比如執行set aa=345後,變數aa的值既可以被視為數字345,也可以被視為字元串345。
set命令具有擴展功能,如用作互動輸入、字元串處理、數值計算等,屬於高級命令範疇。

高級命令

說明

if、choice、for等命令是批處理檔案中比較高級的命令

if命令

if命令用語在批處理程式中執行條件處理
語法:
if [not] errorlevel Number Command [else Expression]
if [not] Strting==String2 Command [else Expression]
if [not] exist FileName Command [else Expression}
如果啟用了命令擴展,可以使用以下語法:
if [/i] String1 Compare0p String2 command [else Expression]
if cmdextversion Nuber Command [else Expression]
參數:
not
指定只有當條件為假時才執行該命令
errorlevel Number
只有當由cmd.exe運行的前一個程式返回等於或大於Number的退出碼時,才能指定真條件。
Command
指定只有滿足前面的條件時才執行的命令。
String1==String2
只有當String和String2相同時才能指定真條件。這些值可以是文字字元串或批處理變數(例如%1)。對於文字字元串,不需要使用問號。
exist FileName
如果FileName存在,則指定真條件。
Compareop
指定3個字母的比較運算符。表1列出了Compareop的有效值。
運 算 符
描 述
運 算 符
描 述
EQU
等於
LEQ
小於或等於
NEQ
不等於
GTR
大於
LSS
小於
GEQ
大於或等於
/i
強制字元串比較忽略大小寫。可以在if的String1==String2格上使用/i。這些比較是通用的。因為如果String1和String2全部由數字組成,則字元串將轉化為數字並執行比較。
cmdxtversion Number
只有與cmd.exe的“命令擴展”功能相關的內部版本號等於或大於Number時,才指定真條件。第一版本是1。當命令擴展的功能有重大增強時,則在此號碼上加1。禁用命令擴展時(默認情況下命令擴展為啟用),cmdextversion條件不為真。
defined Variable
如果定義了Variable,則指定條件為真。
Expression
指定將傳遞給else子句中的命令行命令和任何參數。
舉例:
例1:要在找不到檔案product.dat時顯示找不到數據檔案的訊息,則輸入:
if not exist product .dat echo Cannot find data file
例2:如果在格式化驅動器A中的磁碟期間發生錯誤,則以下命令將顯示錯誤訊息。
----------------------------------------------------------------------------------------------------
:begin
@echo off
format a:/s
if not errorlevel 1 goto end
echo An error occurred during formatting.
:end
echo End of batch program.
----------------------------------------------------------------------------------------------------
如果沒發生錯誤,不會出現錯誤訊息

choice命令

使用choice命令,在批處理程式中,通過顯示提示信息並暫停批處理程式,用戶可以從一組選項鍵中進行選擇。
語法:
choice [/c [Choices]] [/n] [/cs] [/t Timeout /d Choice] [/m Text]
參數:
/c Choices
指定用戶選項鍵。顯示時,選項鍵由逗號分隔,出現在中括弧([])中,後面跟著問號。如果未指定“/c Choices ”,默認情況下,Choice顯示使用[Y,N]。
/n
隱藏用戶選項鍵。如果使用此命令行選項,將在提示符之前出現訊息正文,選項仍處於啟用狀態。
/cs
指定用戶選項鍵必須區分大小寫。默認情況下,用戶選項鍵不區分大小寫。
/t Timeout /d Choice
指定在默認為指定鍵之前choice暫停指定的秒數。表2描述了/t命令行選項的值。

描 述
Timeout
要暫停的秒數。可接受的值介於0~9 999。如果使用0,choice在默認為指定鍵之前不暫停
/d Choice
指定Timeout秒數之後的默認選擇。使用的字元必須在由/c Choice指定的選擇集中。如果使用此命令行選項,還必須同時指定/t Timeout
指定要在提示符之前顯示的文字。如果使用包括命令行選項字元(即“/”)作為提示符之前的一部分文字,必須用引號將該文字引起來。如果未指定任何文字,choice將只顯示提示符。
舉例:
----------------------------------------------------------------------------------------------------
@echo off
choice /C dme /m "defrag,mem,end"
if errorlevel 3 goto end //應先判斷數值最高的錯誤碼
if errorlevel 2 goto mem
if errotlevel 1 goto defrag
:defrag
c:\dos\defrag
goto den
:end
echo good bye
----------------------------------------------------------------------------------------------------
此檔案運行後,將顯示:
defrag,men,end[D,M,E]?用戶可選擇d m e
然後if語句將做出判斷,c表示執行標號為end的程式段,程式結束。

for命令

for命令用於對一組檔案中的每個檔案運行指定的命令
語法:
for [%Variable | %%Variable ] in (Set) do Command [CommandLineoptions]
參數:
[%Variable | %%Variable ]
必需參數,代表可替換的參數。使用%Variable通過命令提示符執行for命令。使用%%Variable在批處理檔案中執行for命令。變數要區分大小寫,並且必須用Alpha值表示,例如%A、%B或%C。
(set)
必需參數,指定要用指定命令處理的一個或多個檔案、目錄、數值範圍以及文本字元串。需要括弧。
Command
必需參數,指定要對包括在指定的(Set)中每個檔案、目錄、數值範圍以及文本字元串所執行的命令。
CommandLineOptions
指定要與所指定命令一起使用的任何命令行選項。
循環命令只要條件符合,它將多次執行同一命令,同時for的循環裡面還可以套用for再進行循環。
舉例:
for %%c in (*.bat*.txt)
do type %%c
含義:如果以.bat或.txt結尾的檔案,則顯示檔案的內容。

相關詞條

熱門詞條

聯絡我們