BAT教程 :第六节(if命令讲解)
最近發現有些朋友一老問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 執行成功了!??"這一句代碼因該寫成:IFERRORLEVEL 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%==0gotoyes
gotono
:yes
echo!執行成功了
pause
exit
:no
echo 基本上執行失敗了..
pause
這個是根據你輸入的命令,
在來一個簡化版的
@echo off
set/p var=隨便輸入個命令:
%var%
if%ERRORLEVEL%==0(echo%var%執行成功了)ELSEecho%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
ifexist"c:\test"(echo 存在文件)ELSEecho 不存在文件
pause
判斷的文件路徑加引號是為了防止路徑有空格,
這個語法沒什么太多的用法,基本就這樣了,就不多介紹了.
另外我們看到每條IF用法后都有個[NOT]語句,這啥意思?其他加上他的話,就表示先判斷我們的條件不成立時,
沒加他默認是先判斷條件成立時,比如上面這個例子
@echo off
ifnotexist"c:\test"(echo 存在文件)ELSEecho 不存在文件
pause
加個NOT,執行后有什么結果,如果你的C盤下更本就沒c:\test,他還是會顯示"存在文件",這就表示了加了NOT就
會先判斷條件失敗!懂了吧,
@echo off
ifnotexist"c:\test"(echo 不存在文件)ELSEecho 存在文件
pause
另外IF還有一些增強的用法,如下
??IF[/I]string1 compare-op string2 command
??IFCMDEXTVERSION number command
??IFDEFINED variable command
后面兩個用法,我不做介紹,因為他們和上面的用法表示的意義基本一樣,只簡單說說??IF[/I]string1 compare-op string2 command這個語句在判斷字符時不區分字符的大小寫,看這兩個例子
@echo off
ifa==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
總結
以上是生活随笔為你收集整理的BAT教程 :第六节(if命令讲解)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: IT规划的企业应用实践(8)研究的目的和
- 下一篇: 广告贴——希望大家有空能够参加11月27