1. 程式人生 > >批處理中的IF詳解

批處理中的IF詳解

效果 我不 width set 符號 等於 ron 例子 ima

在CMD使用IF /?打開IF的系統幫助會發現IF有3種基本的用法!

第一種用法:IF [NOT] ERRORLEVEL number command

這種用法現在很少用了,因為它需要使用到CHOICE命令,這個命令現在被set /p代替了,它是判斷CHOICE命令選擇的選項的,CHOICE命令是一個提供選項功能的命令。

例子:

技術分享

這個用法的基本做用是判斷上一條命令執行結果的代碼,以決定下一個步驟.一般上一條命令的執行結果代碼只有兩結果,"成功"用0表示 "失敗"用1表示.

技術分享

技術分享

技術分享

第二種用法:IF [NOT] string1==string2 command

技術分享

第三種用法:IF [NOT] EXIST filename command

技術分享

IF增強的用法

IF [/I] string1 compare-op string2 command #參數/I表示不區分大小寫
IF CMDEXTVERSION number command
IF DEFINED variable command        #判斷變量是否存在,很有用

  CMDEXTVERSION 條件的作用跟 ERRORLEVEL 的一樣,除了它是在跟與命令擴展名有關聯的內部版本號比較。第一個版本是 1。每次對命令擴展名有相當大的增強時,版本號會增加一個。命令擴展名被停用時,CMDEXTVERSION 條件不是真的。

如果已定義環境變量,DEFINED 條件的作用跟 EXISTS 的一樣,下面兩條命令效果一樣。
  IF DEFINED variable command
  IF NOT "variable"=="" command

用“set variable=”命令使變量variable變成未定義,即空值,一句話,變量值為空,則為未定義;變量值不為空,則為已定義。
用語句IF DEFINED variable command判斷變量是否存在時,請註意variable為不使用引導符號%的變量名,不能用寫為%variable%,否則出錯。

@echo off

set a=10
if DEFINED a (echo l hava define) else (echo l don‘t define)
set a=
if DEFINED a (echo l hava define) else (echo l don‘t define)

pause

輸出:

l hava define
l don‘t define


最後面還有一些用來判斷數字的符號:
EQU - 等於
NEQ - 不等於
LSS - 小於
LEQ - 小於或等於
GTR - 大於
GEQ - 大於或等於

@echo off
set /p var=請輸入一個數字:
if %var% LEQ  4 (echo 我小於等於4) ELSE echo 我不小於等於4
pause

批處理中的IF詳解