bat腳本參數 if goto choice for使用的學習筆記。


    寫過幾次bat腳本,但一直沒有總結,最近找到一個網頁介紹bat,總結得很好,轉自 http://www.jb51.net/article/49627.htm:

    本文只總結我不會的,全面的看原網頁就可以了。

   1 參數

   '%':參數符,%[1-9]表示參數,多個參數要用空格或tab隔開。變量可以從%0到%9,%0表示批處理命令本身,其它參數字符串用%1到%9順序表示

  1. 例3:C:根目錄下一批處理文件名為t.bat,內容為: @echo off type %1 type %2
  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為擴展名的文件的內容。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM