熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> 嵌入式開發 >> 正文

bat批處理 if 命令示例詳解

2022-06-13   來源: 嵌入式開發 
if 命令示例詳解

if正如它E文中的意思就是如果的意思用來進行條件判斷翻譯過來的意思就是如果符合某一條件便執行後面的命令
主要用來判斷兩個字符串是否相等兩個數值是大於小於等於然後執行相應的命令
當然還有特殊用法如結合errorlevelif errorlevel  echo error
或者結合defined(定義的意思):if defined test (echo It is defined) else echo It isnt 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的初始值為當一些命令執行不成功就會返回一個數值  等
IFERRORLEVEL 
測試代碼

  復制代碼 代碼如下:

  @ECHO OFF 
XCOPY F:\testbat D:\ 
IF ERRORLEVEL  ECHO 文件拷貝失敗 
IF ERRORLEVEL  ECHO 成功拷貝文件 


如果文件拷貝成功屏幕就會顯示成功拷貝文件否則就會顯示文件拷貝失敗 
IF ERRORLEVEL 是用來測試它的上一個DOS命令的返回值的注意只是上一個命令的返回值而且返回值必須依照從大到小次序順序判斷 
因此下面的批處理文件是錯誤的 
@ECHO OFF 
XCOPY C:\AUTOEXECBAT D:\ 
IF ERRORLEVEL  ECHO 成功拷貝文件 
IF ERRORLEVEL  ECHO 未找到拷貝文件 
IF ERRORLEVEL  ECHO 用戶通過ctrlc中止拷貝操作 
IF ERRORLEVEL  ECHO 預置錯誤阻止文件拷貝操作 
IF ERRORLEVEL  ECHO 拷貝過程中寫盤錯誤 
無論拷貝是否成功後面的 
未找到拷貝文件 
用戶通過ctrlc中止拷貝操作 
預置錯誤阻止文件拷貝操作 
拷貝過程中寫盤錯誤 
都將顯示出來

  復制代碼 代碼如下:

  附錄
以下就是幾個常用命令的返回值及其代表的意義 
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
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.