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

來源:互聯網
上載者:User

作者:朱金燦

來源: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 查看評論

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.