天天看點

[原]Windows批處理指令學習二

作者:朱金燦

來源:http://blog.csdn.net/clever101

       繼續學習Windows批處理指令。

批處理檔案參數:

有點程式設計基礎的人都知道函數有參數.批處理檔案也有參數。批處理檔案還可以像C語言的函數一樣使用參數(相當于DOS指令的指令行參數),這需要用到一個參數表示符"%"。

   %[1-9]表示參數,參數是指在運作批處理檔案時在檔案名後加的以空格(或者Tab)分隔的字元串。變量可以從%0到%9,%0表示批處理指令本身,其它參數字元串用%1到%9順序表示。

動手實踐:

建立一個批處理檔案a.bat,在裡面輸入指令:

@echo off

ping %1

ping %2

然後在指令控制台環境下輸入指令:C:\Users\zhu>C:\a.bat www.163.com www.sina.com

看看有什麼效果,同時領悟下如何使用多個批處理檔案參數。

if指令

if語句一共有3種模式,如下:

IF [NOT]string1==string2 command

IF [NOT]EXIST filename command

IF [NOT]ERRORLEVEL number command

 NOT               指定隻有條件為 false 的情況下, Windows XP 才應該執行該指令。

 ERRORLEVEL number 如果最後運作的程式傳回一個等于或大于指定數字的退出編碼,指定條件為 true。

 string1==string2  如果指定的文字字元串比對,指定條件為 true。

 EXIST filename    如果指定的檔案名存在,指定條件為 true。

 command           如果符合條件,指定要執行的指令。如果指定的條件為 FALSE,指令後可跟一個執行 ELSE關鍵字後的指令的 ELSE 指令。

我們先講解第一種:

IF [NOT]string1==string2 command

自然語句意思:如果string1==string2,那麼執行command

下面再舉個能實際應用的if語句.

自然語句:如果輸入的參數為3,那麼顯示"a=3"

計算機語句:

@echo off

if"%1"=="3" echo "a=3"

或者寫成

@echo off

if %1==3echo "a=3"

注意:當要測試的時候,因在cmd底下,輸入1.bat 3.因為這裡用了是傳遞參數,具體看文章前部分"批處理檔案參數".

第二種:

IF [NOT]EXIST filename command

這條指令用語檢測檔案是否存在.如果存在,執行command.如果不存在,則什麼也不顯示.

如:我們想檢查e盤根目錄下是否有一個叫2.txt的檔案.如果存在,則顯示exist.如果不存在,則什麼也不顯示.

批處理指令如下:

@echo off

if existe:2.txt echo "exist 2.txt"

第三種:

比起前兩種,第三種比較難懂,我也看得半懂不懂的。查了一些資料,大緻了解了,了解IF[NOT] ERRORLEVEL number command的這句的關鍵是ERRORLEVEL這個到底指什麼?

原來每一行的DOS指令運作完,都有一個傳回值(你可以把它比作是程式中的函數的傳回值)。一般上一條指令的執行結果代碼隻有兩結果,"成功"用0表示 "失敗"用1表示.。ERRORLEVEL就是用來儲存這個傳回值的。就是假如ERRORLEVEL大于等于number(number為你給定的常數或批處理檔案參數),則執行command。

還是讓我們做實驗來了解吧。

動手實踐:

     建立一個批處理檔案a.bat,在裡面輸入指令:

@echo off

ping %1

ping %2

然後在指令控制台環境下輸入指令:C:\Users\zhu>C:\a.bat www.163.com www.sina.com

看看有什麼效果,同時領悟下如何使用多個批處理檔案參數。

@echo off

net user

IF ERRORLEVEL 1 echo net user 執行失敗了!

     可能你要說:我想要提示執行指令的資訊,那你可以這樣寫:

@echo off

net user

IF NOT ERRORLEVEL 1 echo net user 執行成功了!

    可能你覺得這種寫法别扭,同時你覺得應該是提示執行成功,反之提示失敗。呵呵,那麼我們就改成下面試試:

@echo off

net user

if%ERRORLEVEL% == 0 (

echo netuser 執行成功了!

)else (

echo netuser 執行失敗了!

)    

這是if和else的配套使用,其中if %ERRORLEVEL% == 0是假如ERRORLEVEL等于0。值得注意的是if和else的配套使用有着嚴格的使用格式,必須是:

if%ERRORLEVEL% == 0 (

command   // 執行指令

)else (

command   // 執行指令

)   

goto指令

     說實話,看完這個指令我立即想起C語言的goto語句。事實上這個指令和C語言的goto語句也非常相像,也很簡單。動手實踐下你就知道了。

建立一個批處理檔案a.bat,在裡面輸入指令:

@echo off

net user

if%ERRORLEVEL% == 0  goto successed

if%ERRORLEVEL% == 1  goto failed

:successed

echo netuser 執行成功!

gotoreturn

:failed

echo netuser 執行失敗!

:return

set指令

set指令我比較常用的是用來設定環境變量。它的用法很簡單,例子如下:

set hosts=c:/windows/system32/drivers/etc

注意:set指令隻能設定目前cmd下才有效的環境變量。

參考文獻:

1.網上一位大俠(姓名不詳)寫的《批處理檔案教程》

作者:clever101 發表于2012-2-9 23:06:08 原文連結 閱讀:339 評論:0 檢視評論

繼續閱讀