BAT教程 :第六節(if命令講解)

來源:互聯網
上載者:User

最近發現有些朋友一老問IF命令的用法,IF命令個人覺得很簡單,所以就一直沒把發放到新手教學貼裡說,現在我給補上一文,希望對各位"非常BAT的"新手朋友們有所協助.
現在開始:
在CMD使用IF/?開啟IF的系統協助(自己看我就不全部列出來了),
IF[NOT]ERRORLEVEL number command
IF[NOT]string1==string2 command
IF[NOT]EXIST filename command
首先來講第一種用法IF[NOT]ERRORLEVEL number command
這個用法的基本做用是判斷上一條命令執行結果的代碼,以決定下一個步驟.
一般上一條命令的執行結果代碼只有兩結果,"成功"用0表示  "失敗"用1表示.
舉個例子:
@echo off
net user
IF %ERRORLEVEL%==0 echo net user
pause
這是個簡單判斷上條命令是否執行成功.
細心的朋友可能會發現,這個用法和協助裡的用法不太一樣,按照協助裡的寫法"IF %ERRORLEVEL% == 0 echo net user 執行成功了!  "這一句代碼因該寫成:IF ERRORLEVEL 0 echo net user
那為什麼我要寫成這樣呢?各位自己把代碼改掉執行後,就會發現錯誤了!用這種文法,不管你的上面的命令是否執行成功,他都會認為命令成功了,不知道是BUG還是本人理解錯誤...
%ERRORLEVEL%這是個系統變數,"成功"用0表示  "失敗"用1表示.當然還有其他參數,用的時候基本就這兩數字.
在舉幾個例子給新手理解
@echo off
net usertest
IF %ERRORLEVEL%==1 echo net user
pause
這個是判斷上一條命令是否執行失敗的
@echo off
set/p var=隨便輸入個命令:
%var%
if %ERRORLEVEL%==0 goto yes
goto no
:yes
echo!執行成功了
pause
exit
:no
echo 基本上執行失敗了..
pause
這個是根據你輸入的命令,
在來一個簡化版的
@echo off
set/p var=隨便輸入個命令:
%var%
if %ERRORLEVEL%==0 (echo %var%執行成功了)ELSE echo %var%
pause

當然我門還可以把if else這樣的語句分成幾行寫出來,使他看上去好看點...
@echo off
set/p var=隨便輸入個命令:
%var%
if %ERRORLEVEL%==0  (
   echo!執行成功了
   )ELSE(
   echo 基本上執行失敗了..
   )
pause
這裡介紹的兩種簡寫對IF的三種文法都可以套用,不單單是在IF[NOT]ERRORLEVEL number command
這種法上才能用
現在來說第二種用法IF[NOT]string1==string2 command
這個呢就是用來比較變數或者字元的值是不是相等的.
例子
@echo off
set/p var=請輸入第一個比較字元:
set/p var2=請輸入第二個比較字元:
if%var%==%var2%(echo 我們相等)ELSEecho 我們不相等
pause
上面這個例子可以判斷你輸入的值是不是相等,但是你如果輸入相同的字元,但是如果其中一個後面打了一個空格,
這個例子還是會認為相等,如何讓有空格的輸入不相等呢?我們在比較字元上加個雙引號就可以了.
@echo off
set/p var=請輸入第一個比較字元:
set/p var2=請輸入第二個比較字元(多輸入個空格試試):
if "%var%"=="%var2%"(echo 我們相等)ELSEecho 我們不相等
pause
第三種用法IF[NOT]EXIST filename command
這個就是判斷某個檔案或者檔案夾是否存在的文法
例子
@echo off
if exist"c:\test"(echo 存在檔案)ELSEecho 不存在檔案
pause
判斷的檔案路徑加引號是為了防止路徑有空格,
這個文法沒什麼太多的用法,基本就這樣了,就不多介紹了.
另外我們看到每條IF用法後都有個[NOT]語句,這啥意思?其他加上他的話,就表示先判斷我們的條件不成立時,
沒加他預設是先判斷條件成立時,比如上面這個例子
@echo off
ifnotexist"c:\test"(echo 存在檔案)ELSEecho 不存在檔案
pause
加個NOT,執行後有什麼結果,如果你的C盤下更本就沒c:\test,他還是會顯示"存在檔案",這就表示了加了NOT就
會先判斷條件失敗!懂了吧,
@echo off
if not exist"c:\test"(echo 不存在檔案)ELSEecho 存在檔案
pause
另外IF還有一些增強用法,如下
  IF[/I] string1 compare-op string2 command
  IF CMDEXTVERSION number command
  IF DEFINED variable command
後面兩個用法,我不做介紹,因為他們和上面的用法表示的意義基本一樣,只簡單說說  IF[/I]string1 compare-op string2 command這個語句在判斷字元時不區分字元的大小寫,看這兩個例子
@echo off
if a==A(echo 我們相等)ELSEecho 我們不相等
pause
執行後會顯示我們不相等
@echo off
if/i a==A(echo 我們相等)ELSEecho 我們不相等
pause
加上/
最後面還有一些用來判斷數位符號
EQU-等於
NEQ-不等於
LSS-小於
LEQ-小於或等於
GTR-大於
GEQ-大於或等於
我幾舉一個例子,大家都懂數學...不講多了
@echo off
set/p var=請輸入一個數字:
if %var%LEQ  4(echo 我小於等於4)ELSEecho 我不小於等於4
pause

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.