bat批處理 if 命令示例詳解

2021-09-30 08:56:58 字數 2777 閱讀 5257

if 命令示例詳解 

if,正如它e文中的意思,就是「如果」的意思,用來進行條件判斷。翻譯過來的意思就是:如果符合某一條件,便執行後面的命令。 

主要用來判斷,1、兩個「字串」是否相等;2、兩個數值是大於、小於、等於,然後執行相應的命令。 

當然還有特殊用法,如結合errorlevel:if errorlevel 1 echo error 

或者結合defined(定義的意思):if defined test (echo it is defined) else echo it isn't defined 

用法示例: 

1、檢測字串(注意,用if檢測字串是否相等的時候,後面用的不是「=」,而是「==」): 

複製****如下:

@echo off 

set "str=this is a test" 

rem 檢測變數%str%是否等於test,如果相等,顯示ok,否則顯示no 

if "%str%"=="test" (echo ok) else echo no 

pause>nul 

2、檢測數值:(注意,

批處理中大於符號不能用:「>」,而用"gtr",其它的也類似) 

比較運算子一覽: 

equ - 等於 

neq - 不等於 

lss - 小於 

leq - 小於或等於 

gtr - 大於 

geq - 大於或等於 

檢測數值 20 是否大於 15演示**: 

複製****如下:

@echo off 

set /a num1=20 

set /a num2=15 

if %num1% gtr %num2% echo %num1%大於%num2% 

if %num1% equ %num2% echo %num1%等於%num2% 

if %num1% lss %num2% echo %num1%小於%num2% 

pause>nul 

3、if結合errorlevel使用: 

說明:環境變數errorlevel的初始值為0,當一些命令執行不成功,就會返回乙個數值,如:1 ,2 等 

if-errorlevel 

測試**: 

複製****如下:

@echo off 

xcopy f:/test.bat d:/ 

if errorlevel 1 echo 檔案拷貝失敗 

if errorlevel 0 echo 成功拷貝檔案 

如果檔案拷貝成功,螢幕就會顯示「成功拷貝檔案」,否則就會顯示「檔案拷貝失敗」。 

if errorlevel 是用來測試它的上乙個dos命令的返回值的,注意只是上乙個命令的返回值,而且返回值必須依照從大到小次序順序判斷。 

因此下面的

批處理檔案是錯誤的: 

@echo off 

xcopy c:/autoexec.bat d:/ 

if errorlevel 0 echo 成功拷貝檔案 

if errorlevel 1 echo 未找到拷貝檔案 

if errorlevel 2 echo 使用者通過ctrl-c中止拷貝操作 

if errorlevel 3 echo 預置錯誤阻止檔案拷貝操作 

if errorlevel 4 echo 拷貝過程中寫盤錯誤 

無論拷貝是否成功,後面的: 

未找到拷貝檔案 

使用者通過ctrl-c中止拷貝操作 

預置錯誤阻止檔案拷貝操作 

拷貝過程中寫盤錯誤 

都將顯示出來。 

複製****如下:

附錄: 

以下就是幾個常用命令的返回值及其代表的意義: 

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 拷貝過程中寫盤錯誤 

4、if還有乙個特殊的用法就是可以用來檢測某個變數是否已經被定義 

用法示例: 

複製****如下:

@echo off 

set "str1=ok" 

set "str2=no" 

if defined str1 echo str1已經被定義 

if defined str2 echo str2已經被定義 

if defined str3 (echo str3已經被定義) else echo str3 沒有被定義 

pause>nul 

待續....

BAT批處理檔案 if命令詳解

if 2019.04.27 執行批處理程式中的條件處理。if not errorlevel number command if not string1 string2 command if not exist filename command not 指定只有條件為 false 的情況下,windo...

bat批處理for f命令

含有 f的for詳細說明 含有 f的for有很大的用處,在批處理中使用的最多,用法如下 格式 for f options i in file do command for f options i in string do command for f options i in command do c...

Bat 批處理之 for f 詳解

bat 批處理之 for f 詳解 含有 f的for 格式 for f options i in file do command for f options i in string do command for f options i in command do command 這個可能是最常用的,...