bat中errorlevel的使用介紹
■前言今天在bat**中看到了 ,以下的**
set var=%errorlevel%
搜尋整個程式,也沒有發現,**定義了errorlevel這個變數
只是搜了到了類似下面的**
if errorlevel 1 goto errorexit
......
:errorexit
exit /b 1
■擴充套件linux 中,使用 「$?」來判斷上一條命令是否執行成功。
shell中設定返回值時,執行shell之後,頁可以執行 $? 來檢視shell的返回值
■確認的結果
if errorlevel 1 goto errorexit
它的作用是判斷前一條命令的錯誤返回值
(在if 後面可以直接使用,其他方式使用,和平常變數一樣,前後加上%)
■舉例1
c:\test\temp\123>dir /b /s
c:\test\temp\123\新建文字文件 (2).txt
c:\test\temp\123\新建文字文件6.txt
c:\test\temp\123>echo %errorlevel%
0c:\test\temp\123>dir /b /s *6.txt
c:\test\temp\123\新建文字文件6.txt
c:\test\temp\123>echo %errorlevel%
0c:\test\temp\123>dir /b /s *9.txt
找不到檔案
c:\test\temp\123>echo %errorlevel%
1c:\test\temp\123>
■舉例2
bat1可以呼叫bat2
被呼叫的bat2可以設定返回值
if errorlevel 1 goto errorexit
......
exit /b 0
:errorexit
exit /b 1
bat1 呼叫bat2之後,
errorlevel 中儲存的就是bat2中設定的返回值
■幫助文件
可以使用 if /? 的方式,檢視幫助文件。
(單位的電腦不是中午系統,寫在這裡面,便於以後自己檢視)
c:\users>if /?
執行批處理程式中的條件處理。
if [not] errorlevel number command
if [not] string1==string2 command
if [not] exist filename command
not 指定只有條件為 false 的情況下,windows 才
應該執行該命令。
errorlevel number 如果最後執行的程式返回乙個等於或大於
指定數字的退出**,指定條件為 true。
string1==string2 如果指定的文字字串匹配,指定條件為 true。
exist filename 如果指定的檔名存在,指定條件為 true。
command 如果符合條件,指定要執行的命令。如果指定的
條件為 false,命令後可跟 else 命令,該命令將
在 else 關鍵字之後執行該命令。
else 子句必須出現在同一行上的 if 之後。例如:
if exist filename. (
del filename.
) else (
echo filename. missing.
)由於 del 命令需要用新的一行終止,因此以下子句不會有效:
if exist filename. del filename. else echo filename. missing
由於 else 命令必須與 if 命令的尾端在同一行上,以下子句也
不會有效:
if exist filename. del filename.
else echo filename. missing
如果都放在同一行上,以下子句有效:
if exist filename. (del filename.) else echo filename. missing
如果命令擴充套件被啟用,if 會如下改變:
if [/i] string1 compare-op string2 command
if cmdextversion number command
if defined variable command
其中, compare-op 可以是:
equ - 等於
neq - 不等於
lss - 小於
leq - 小於或等於
gtr - 大於
geq - 大於或等於
而 /i 開關(如果指定)說明要進行的字串比較不分大小寫。
/i 開關可以用於 if 的 string1==string2 的形式上。這些
比較都是通用的;原因是,如果 string1 和 string2 都是
由數字組成的,字串會被轉換成數字,進行數字比較。
cmdextversion 條件的作用跟 errorlevel 的一樣,除了它
是在跟與命令擴充套件有關聯的內部版本號比較。第乙個版本
是 1。每次對命令擴充套件有相當大的增強時,版本號會增加乙個。
命令擴充套件被停用時,cmdextversion 條件不是真的。
如果已定義環境變數,defined 條件的作用跟 exist 的一樣,
除了它取得乙個環境變數,返回的結果是 true。
如果沒有名為 errorlevel 的環境變數,%errorlevel%
會擴充為 errolevel 當前數值的字串表示式;否則,你會得到
其數值。執行程式後,以下語句說明 errorlevel 的用法:
goto answer%errorlevel%
:answer0
echo program had return code 0
:answer1
echo program had return code 1
你也可以使用以上的數字比較:
if %errorlevel% leq 1 goto okay
如果沒有名為 cmdcmdline 的環境變數,%cmdcmdline%
將在 cmd.exe 進行任何處理前擴充為傳遞給 cmd.exe 的原始
命令列;否則,你會得到其數值。
如果沒有名為 cmdextversion 的環境變數,
%cmdextversion% 會擴充為 cmdextversion 當前數值的
字串符表示式;否則,你會得到其數值。
■幫助文件 exit
c:\test\temp\123>exit /?
退出 cmd.exe 程式(命令直譯器)或當前批處理指令碼。
exit [/b] [exitcode]
/b 指定要退出當前批處理指令碼而不是 cmd.exe。如果從乙個
批處理指令碼外執行,則會退出 cmd.exe
exitcode 指定乙個數字號碼。如果指定了 /b,將 errorlevel
設成那個數字。如果退出 cmd.exe,則用那個數字設定
過程退出**。
ErrorLevel 的引數和設定
errorlevel 的引數和設定 1 例項一 bat指令碼中常用 errorlevel 表達上一條命令的返回值,用於判斷。比如 cmd1 if errorlevel 1 cmd2 如果cmd1返回的錯誤碼值等於1時,將執行cmd2操作 一般上一條命令的執行結果返回的值只有兩個,0表示 成功 1表示...
bat中的if else用法
在c語言中,語法是非常靈活的,if 語句寫起來非常自由,換行與不換行,括號放在 都由程式設計師自己決定,但是,在.bat檔案中,if 的使用就沒有那麼自由了,一旦括號格式不對,就會出錯,我們先來看看if吧 echo off if exist 1.txt echo yes echo 程式設計師 1.t...
bat處理中的管道
最早使用 管道 linux系統中 命令1 命令2執行命令1的輸出作為命令2的輸入 舉例 ps ef grep tomcat ps與grep分別是兩個命令 ps ef列出程序 grep tomcat 在列出的內容中查詢含有tomcat的部分 通過這種方式我們可以一目了然地,檢視現在tomcat程序的狀...