3.1 if条件语句
生活随笔
收集整理的這篇文章主要介紹了
3.1 if条件语句
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
3.1 if條件語句
《批處理入門手冊》bat腳本如果要寫中文就要以gbk的編碼保存賦值=,相等==,左右兩邊不要有空格------------------------------------------------------------------------------------------------------3.1 學習if條件語句學習要點:5種if語句的基本語法:1。判斷兩個字符串是否相等,if "字符串1"=="字符串2" command 語句;2。判斷兩個數值是否相等,if 數值1 equ 數值2 command 語句;3。判斷判斷驅動器,文件或文件夾是否存在,if exist filename command 語句;4。判斷變量是否已經定義,if defined 變量 command 語句;5。判斷上個命令的返回值,if errorlevel 數值 command 語句。------------------------------------------------------------------------------------------------------1、判斷兩個字符串是否相等
if "字符串1" == "字符串2" command 語句注意:在"字符串1"=="字符串2"中,是兩個連續的"="例1@echo offset /p var1=請輸入第一個比較的字符:set /p var2=請輸入第二個比軟的字符:if "%var1%"=="%var2%" (echo 輸入的兩個字符相同) else echo 輸入的兩個字符不相同pause執行后會要求你輸入兩個字符串,然后批處理判斷它倆是否相同。在判斷字符串是否相等的時候,if是會區分大小寫的,例2@echo offif "a"=="A" (echo 輸入的兩個字符相同) else echo 輸入的兩個字符不相同pause執行后會顯示:輸入的兩個字符不相同如果我們不想讓它區分大小寫,則可以加上/i 參數。再看下面這個例子,例3@echo offif /i "a"=="A" (echo 輸入的兩個字符相同) else echo 輸入的兩個字符不相同pause這次執行后會顯示:輸入的兩個字符相同------------------------------------------------------------------------------------------------------2、判斷兩個數值是否相等
if 數值1 equ 數值2 command 語句語句中的equ 表示相等的意思,判斷兩個數值之間的大小關系還有以下關系符號:中文含義 關系符 英文解釋等于 ? ?? equ equal大于 ? ?? gtr greater than大于或等于 geq greater than or equal小于 ? ?? lss less than小于或等于 leq less than or equal不等于 ? ? neq no equal例4 判斷數值是否相等
@echo off?set /p var=請輸入一個數字:?if %var% geq 10 (echo 此數大于或等于10) else echo 此數小于10pause注意哦,批處理中的大于號,小于號,等于號等等都不能用:“>” “<” “=” 這些符號,而要用像"gtr"這類的。☆注意:if 比較字符串與比較數字之間的區別,它們的區別體現在引號""上面,請看下面的例子【example 1】@echo offif "12" lss "4" (echo 12竟然小于4哦?) else echo 12當然不會小于4的!pause執行的結果是:12竟然小于4哦?【example 2】@echo offif 12 lss 4 (echo 12竟然小于4哦?) else echo 12當然不會小于4的!Pause執行的結果是:12當然不會小于4的!為什么【example 1】中加了雙引號""會出錯呢?原因如下:如果要比較的兩個元素加了雙引號"",那么會被當成是字符的比較。兩個元素作比較的流程是:先比較兩個元素的首位,如果首位相同,再比較第二位,如果第二位相同,再比較第三位。。。依此,在【example 1】if "12" lss?"4" 語句中,實質是1與4的比較,1當然小于4,所以執行了后面的命令:echo 12竟然小于4哦?☆建議:如果是字符串的比較就使用雙引號 "" 是數字的比較就不用雙引號了!------------------------------------------------------------------------------------------------------3、判斷判斷驅動器
文件或文件夾是否存在,if exist filename command 語句我們來瞧瞧這個判斷驅動器,文件或者文件夾是否存在的語句,這里if exist filename 是表示:存在 filename的意思。例5 判斷磁盤是否存在
@echo off?if exist "e:" (echo e盤存在) else echo e盤不存在?pause>nul這里是判斷e: 是否存在!例6 判斷文件是否存在
@echo offif exist d:\123.bat (echo 123.bat文件存在!) else echo 123.bat文件不存在!?pause這個例子是用來判斷123.bat文件是否存在的,但并不嚴謹!如果123.bat是一個文件夾而不是一個文件時,上面的判斷就不行了!那么如何判斷指定的文件123.txt是否存在?請看:@echo offdir /a-d d:\123.bat >nul 2>nulif %errorlevel%==0 (echo 123.bat文件存在!) else echo 123.bat文件不存在!?Pause先用dir的/a-d參數去除123.bat的目錄屬性,指定說明要搜索的123.bat是文件而不是文件夾,并把結果(包括正確和錯誤)屏蔽(>nul 2>nul),如果dir找到了文件123.bat,那么其errorlevel值(dir命令的退出編碼)會被設為0,否則為1則是沒有此文件。當然也可以用||和&&來判斷。關于為什么要用if %errorlevel%==0 而不用if errorlevel 0?呢?在后面if errorlevel中會有說明!例7 判斷是否是文件夾
@echo offif exist test\ (echo test 是文件夾) else echo test 是文件pause這里是判斷文件夾是否存在。對于文件夾存在的判斷,我們不可以用以下兩種寫法:第①種@echo offif exist test\. (echo test 是文件夾) else echo test 是文件pause第②種@echo offif exist test\nul (echo test 是文件夾) else echo test 是文件pause------------------------------------------------------------------------------------------------------4、判斷變量是否已經定義
if defined 變量 command 語句這是一個判斷變量是否已被定義的語句,我們還是先看例子,例8@echo offif defined a (echo 變量 a 已定義) else (echo 變量 a 沒有被定義)pause執行后顯示:變量 a 沒有被定義例9@echo offset a=if defined a (echo 變量 a 已定義) else (echo 變量 a 沒有被定義)pause執行后顯示:變量 a 沒有被定義注意:set a=這后面是沒有空格的。例10@echo offset a=10if defined a (echo 變量 a 已定義) else (echo 變量 a 沒有被定義)pause執行后顯示:變量 a 已定義看了上面三個例子,你應該發現點什么了吧?現在我們應該知道了,當變量不存在或是值為空時,變量則為未定義。當我們用if defined 變量 command 語句判斷變量是否被定義時,請注意變量為不使用引導符號%的變量名,不能用寫為%變量%,否則出錯。大家來試一下下面的這兩個例子,例11@echo offset var1=5if defined var1 (echo 變量var1已定義) else (echo 變量var1沒有被定義)set /p var2=請輸入一個數字:if defined %var2% (echo 變量var2已定義) else (echo 變量var2沒有被定義)pause例12@echo offset var1=5if defined var1 (echo 變量var1已定義) else (echo 變量var1沒有被定義)set /p var2=請輸入一個數字:if defined var2 (echo 變量var2已定義) else (echo 變量var2沒有被定義)pause注意例11和例12哦:一個是%var2%而另一個是var2------------------------------------------------------------------------------------------------------5、判斷上個命令的反回值
if errorlevel 數值 command 語句這個語句是用于判斷上一個命令執行的返回值errorlevel,我們還是先來看看例子,例13?@echo off?net user?if %errorlevel% == 0 (echo net user 命令執行成功) else (echo net user 命令執行失敗)?Pause注意:%errorlevel% 這是個系統變量,所以用兩個%括起來,這里的==為兩個連續的=,也許有些朋友說我上面的例子是不是寫錯了?按照語法應該寫成“if errorlevel 0”才對的呀。如果你是這樣用的話,那你就錯了,還真不信呀?OK,我們來設計個實驗看看例14@echo off?set /p input=請輸入任意一條命令:?if errorlevel 0 (echo %input% 命令執行成功) else (echo %input% 命令執行失敗)pause用這種語法,不管你前面的命令,是否執行成功,它都會認為命令成功了。何解?if errorlevel 語句的特點:當使用 if errorlevel 0 cmmand 句式時,它的含義是:如果返回的錯誤碼值大于或等于0 的時候,將執行cmmand操作;當使用 if %errorlevel%==0 cmmand 句式時,它含義是:如果返回的錯誤碼值等于0 的時候,將執行cmmand操作。一般上一條命令的執行結果返回的值只有兩個,"成功"用0 表示 "失敗"用 1 表示,實際上,errorlevel 返回值可以在0~255 之間,例如xcopy 默認的errorlevel 值就有5 個,分別表示5 種執行狀態:0 復制文件成功?1 未找到復制文件?2 用戶通過CTRL C 終止了xcopy操作?4 出現了初始化錯誤 ?5 出現了磁盤寫入錯誤------------------------------------------------------------------------------------------------------對于if 條件語句,常用的也就上面那5條吧,下面我們來看一下它的兩種格式:if條件語句的完整格式是:if 條件表達式 (語句1) else (語句2)?它的含義是:如果 條件表達式 成立,就執行 語句1,否則,將執行 語句2。? else后的 語句2 也可以不用括號括起。if條件語句的簡單格式是:if 條件表達式 (語句)?它的含義是:如果 條件表達式 成立,將執行 語句,否則,什么都不做。條件表達式后的 語句 也可以不用括號括起。例15@echo off?if exist "d:\123.txt" (del "d:\123.txt")pause你也可以寫成下面這樣例16@echo off?if exist "d:\123.txt" del "d:\123.txt"pause------------------------------------------------------------------------------------------------------補充1:if not 語句
對于if 語句前面的5種基本語法,都可以加上not參數,如1、if not "字符串1"=="字符串2" command 語句;2、if not數值1 equ 數值2 command 語句;3、If not exist filename command 語句;4、if not defined 變量 command 語句;5、if not errorlevel 數值 command 語句。在if 條件表達式 (語句) 語句,如沒有not參數,默認是判斷條件成立時,執行語句;如有not參數,判斷條件失敗時,執行語句。我們看一下下面的例子:例17@echo offif exist "c:\" (echo C盤存在) else echo C盤不存在pause執行后顯示:C盤存在例18@echo offif not exist "c:\" (echo C盤不存在) else echo C盤存在pause執行后顯示:C盤存在不會吧,例18中執行后顯示:C盤不存在,這簡值是在說瞎話了,那到底是什么回事呢?if not exist "c:\" (echo C盤存在) else echo C盤不存在此語句中文意思:如果不存在C:\ 就執行顯示C盤存在;否則<指的是存在C:\ 就執行顯示C盤不存在。注:if exist 意為如果存在,那么if not exist就是如果不存在你的C盤當然是實實在在存在的啦,根椐上面的中文分得知,那執行例18后就顯示為:C盤不存在 通過分析例18,你應該明白if語句中not參數是怎么用了吧!------------------------------------------------------------------------------------------------------補充2:IF語句嵌套的寫法
我們先來看看例1@echo offset a=55if %a% geq 50 (if %a% geq 80 (if %a% geq 100 (echo a大于等于100?) else echo a小于100?) else echo a小于80?) else echo a小于50?pause這是一種比較規范的寫法,那這種寫法是怎樣寫的呢?那我們一步步的來:第一步:if %a% geq 50 ( ) else echo a小于50第二步:在第一步geq 50 后面的括號()里按兩下回車,主要是空兩行出來。if %a% geq 50 (?if %a% geq 80 ( )else echo小于80) else echo a小于50第三步:在第二步geq 80 后面的括號()里按兩下回車,主要是空兩行出來。if %a% geq 50 (?if %a% geq 80 (?if %a% geq 100 ( ) else echo a小于100)else echo小于80) else echo a小于50第四步:在第三步geq 100 后面的括號()里按兩下回車,主要是空兩行出來。if %a% geq 50 (?if %a% geq 80 (?if %a% geq 100 (echo a大于等于100) else echo a小于100)else echo小于80) else echo a小于50上面的代碼中,if %a% 和 )else 要適當的縮進,以達到寫書清晰!總結
以上是生活随笔為你收集整理的3.1 if条件语句的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SFC命令
- 下一篇: 2.1 数个常用的网络命令