寫過幾次bat腳本,但一直沒有總結,最近找到一個網頁介紹bat,總結得很好,轉自 http://www.jb51.net/article/49627.htm:
本文只總結我不會的,全面的看原網頁就可以了。
1 參數
'%':參數符,%[1-9]表示參數,多個參數要用空格或tab隔開。變量可以從%0到%9,%0表示批處理命令本身,其它參數字符串用%1到%9順序表示。
- 例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文件的內容。
2 if
1. if [not] "參數" == "字符串" 待執行的命令
例:if "%1"=="a" format a:
2. if [not] exist [路徑\]文件名 待執行的命令
例: if exist c:\config.sys type c:\config.sys
表示如果存在c:\config.sys文件,則顯示它的內容。
3. if errorlevel <數字> 待執行的命令 (這個命令挺有意思的,所以多寫點。)
很DOS程序在運行結束后會返回一個數字值用來表示程序運行的結果,通過if errorlevel命令可以判斷程序的返回值,根據不同的返回值來決定執行不同的命令(返回值必須按照從大到小的順序排列)。
例:if errorlevel 2 goto x2。
以下就是幾個常用命令的返回值及其代表的意義:
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 拷貝過程中寫盤錯誤
3 goto 這個經常看到,不需要多解釋:
例:goto end
:end echo this is the end
標號用“:字符串”來定義,標號所在行不被執行。
4 choice 使用此命令可以讓用戶輸入一個字符(用於選擇),與if errorlevel配合使用。
注意:choice命令為DOS或者Windows系統提供的外部命令,不同版本的choice命令語法會稍有不同,請用choice /?查看用法。
示例:
CHOICE /?
CHOICE /C YNC /M "確認請按 Y,否請按 N,或者取消請按 C。"
CHOICE /T 10 /C ync /CS /D y :10秒超時,有y n c三個選項,默認選y。
CHOICE /C ab /M "選項 1 請選擇 a,選項 2 請選擇 b。" : 提供a b兩個選項,帶上一條文本。
CHOICE /C ab /N /M "選項 1 請選擇 a,選項 2 請選擇 b。":功能同上,但在提示符中隱藏選項列表。
例:test.bat的內容如下(注意,用if errorlevel判斷返回值時,要按返回值從高到低排列): @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 end
:mem mem goto end
:end echo good bye
5 for 這個用法有點特別,還有不明白的地方,還需要理解:
語法: 對一組文件中的每一個文件執行某個特定命令。
FOR %%variable IN (set) DO command [command-parameters]
%%variable 指定一個單一字母可替換的參數。 (set) 指定一個或一組文件。可以使用通配符。 command 指定對每個文件執行的命令。 command-parameters 為特定命令指定參數或命令行開關。
例如一個批處理文件中有一行: for %%c in (*.bat *.txt) do type %%c
則該命令行會顯示當前目錄下所有以bat和txt為擴展名的文件的內容。