if 命令示例詳解
if
正如它E文中的意思
就是
如果
的意思
用來進行條件判斷
翻譯過來的意思就是
如果符合某一條件
便執行後面的命令
主要用來判斷
兩個
字符串
是否相等
兩個數值是大於
小於
等於
然後執行相應的命令
當然還有特殊用法
如結合errorlevel
if errorlevel
echo error
或者結合defined(定義的意思):if defined test (echo It is defined) else echo It isn
t defined
用法示例
檢測字符串(注意
用if檢測字符串是否相等的時候
後面用的不是
=
而是
==
)
復制代碼 代碼如下:
@echo off
set str=this is a test
REM 檢測變量%str%是否等於test如果相等顯示OK否則顯示NO
if %str%==test (echo OK) else echo NO
pause>nul
檢測數值
(注意
批處理中大於符號不能用
>
而用
gtr
其它的也類似)
比較運算符一覽
EQU
等於
NEQ
不等於
LSS
小於
LEQ
小於或等於
GTR
大於
GEQ
大於或等於
檢測數值
是否大於
演示代碼
復制代碼 代碼如下:
@echo off
set /a num=
set /a num=
if %num% gtr %num% echo %num%大於%num%
if %num% EQU %num% echo %num%等於%num%
if %num% LSS %num% echo %num%小於%num%
pause>nul
if結合errorlevel使用
說明
環境變量errorlevel的初始值為
當一些命令執行不成功
就會返回一個數值
如
等
IF
ERRORLEVEL
測試代碼
復制代碼 代碼如下:
@ECHO OFF
XCOPY F:\testbat D:\
IF ERRORLEVEL ECHO 文件拷貝失敗
IF ERRORLEVEL ECHO 成功拷貝文件
如果文件拷貝成功
屏幕就會顯示
成功拷貝文件
否則就會顯示
文件拷貝失敗
IF ERRORLEVEL 是用來測試它的上一個DOS命令的返回值的
注意只是上一個命令的返回值
而且返回值必須依照從大到小次序順序判斷
因此下面的批處理文件是錯誤的
@ECHO OFF
XCOPY C:\AUTOEXEC
BAT D:\
IF ERRORLEVEL
ECHO 成功拷貝文件
IF ERRORLEVEL
ECHO 未找到拷貝文件
IF ERRORLEVEL
ECHO 用戶通過ctrl
c中止拷貝操作
IF ERRORLEVEL
ECHO 預置錯誤阻止文件拷貝操作
IF ERRORLEVEL
ECHO 拷貝過程中寫盤錯誤
無論拷貝是否成功
後面的
未找到拷貝文件
用戶通過ctrl
c中止拷貝操作
預置錯誤阻止文件拷貝操作
拷貝過程中寫盤錯誤
都將顯示出來
復制代碼 代碼如下:
附錄
以下就是幾個常用命令的返回值及其代表的意義
backup
備份成功
未找到備份文件
文件共享沖突阻止備份完成
用戶用ctrlc中止備份
由於致命的錯誤使備份操作中止
diskcomp
盤比較相同
盤比較不同
用戶通過ctrlc中止比較操作
由於致命的錯誤使比較操作中止
預置錯誤中止比較
diskcopy
盤拷貝操作成功
非致命盤讀/寫錯
用戶通過ctrlc結束拷貝操作
因致命的處理錯誤使盤拷貝中止
預置錯誤阻止拷貝操作
format
格式化成功
用戶通過ctrlc中止格式化處理
因致命的處理錯誤使格式化中止
在提示proceed with format(y/n)?下用戶鍵入n結束
xcopy
成功拷貝文件
未找到拷貝文件
用戶通過ctrlc中止拷貝操作
預置錯誤阻止文件拷貝操作
拷貝過程中寫盤錯誤
if還有一個特殊的用法就是可以用來檢測某個變量是否已經被定義
用法示例
復制代碼 代碼如下:
@echo off
set str=ok
set str=no
if defined str echo str已經被定義
if defined str echo str已經被定義
if defined str (echo str已經被定義) else echo str 沒有被定義
pause>nul
待續
From:http://tw.wingwit.com/Article/program/qrs/201405/31032.html