亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > BAT > 正文

dos if 條件判斷

2020-03-29 20:14:17
字體:
來源:轉載
供稿:網友

1、判斷驅動器、文件或文件夾是否存在,用 if exist 語句;
  2、判斷某兩個字符串是否相等,用 if "字符串1"=="字符串2" 語句;
  3、判斷某兩個數值是否相等,用 if 數值1 equ 數值2 語句;
  4、判斷某個變量是否已經被賦值,用 if defined str 語句;

  if語句的完整格式是這樣的:if 條件表達式 (語句1) else (語句2),它的含義是:如果條件表達式成立,那么,就執行語句1,否則,將執行語句2。

  對于以上四種情形,可以分別使用如下代碼:

  1、if exist d:/test.txt (echo D盤下有test.txt存在) else (echo D盤下不存在test.txt)
  2、if "abc"=="xyz" (echo 字符串abc等于字符串xyz) else (echo 字符串abc不等于字符串xyz)
  3、if 1 equ 2 (echo 1等于2) else (echo 1不等于2)
  4、if defined str (echo 變量str已經被賦值,其值為%str%) else (echo 變量str的值為空)

  判斷字符串是否相等的時候,if會區分大小寫,比如,單純的if語句會認為字符串abc和字符串Abc不相同,若不想區分大小寫,則需要添加 /i 開關,使用 if /i "字符串1"=="字符串2" 的格式;另外,等于符號是連續的"=="而非單獨的"="。

  判斷兩個數值之間的大小關系,除了等于用equ之外,還有其他的關系符號,所有適用于if語句的關系符號見下表:

中文含義 關系符 英文解釋

等于 equ equal
大于 gtr greater than
大于或等于 geq greater than or equal
小于 lss less than
小于或等于 leq less than or equal
不等于 neq no equal

  if語句還有一個精簡格式:if 條件表達式 語句,它的含義是:如果條件表達式成立,將執行語句,否則,什么也不做。

 

學習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 要適當的縮進,以達到寫書清晰!

上一篇:dos 流程跳轉 goto

下一篇:dos 內容重定向

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲精品ady| 国产欧美日韩精品丝袜高跟鞋| 欧美中文在线观看国产| 亚洲男人的天堂网站| 国产精品视频精品| 色偷偷亚洲男人天堂| 一本色道久久综合亚洲精品小说| 久久久久在线观看| 国产精品视频免费在线观看| 成人免费xxxxx在线观看| 日本最新高清不卡中文字幕| 久久久久久亚洲精品| 欧美精品videos| 亚洲成人激情视频| 久久精品视频免费播放| 日本久久久久亚洲中字幕| 亚洲视频电影图片偷拍一区| 欧美精品18videosex性欧美| 日韩电影中文字幕在线观看| 欧美成人午夜激情| 亚洲性夜色噜噜噜7777| 国产精品视频地址| 欧美xxxx做受欧美| 日韩在线欧美在线国产在线| 国产欧美在线视频| 亚洲天天在线日亚洲洲精| 久久久久久久网站| 日韩中文字幕在线观看| 久久精品国产欧美亚洲人人爽| 韩国福利视频一区| 91久久国产精品91久久性色| 欧美国产中文字幕| 国产精品18久久久久久首页狼| 韩国三级日本三级少妇99| 亚洲国产精品电影在线观看| 69久久夜色精品国产69| 国产精品美女无圣光视频| 欧美夫妻性生活xx| 国产精品1234| 日韩精品免费视频| 精品亚洲一区二区三区| 国产日韩欧美日韩| 久久国产精品首页| 亚洲人成在线播放| xxxxx91麻豆| 中文字幕久久久av一区| 日韩美女主播视频| 亚洲精品成人免费| 色综合久久久888| 国产精品国产自产拍高清av水多| 青青草原成人在线视频| 国产精品久久久久久久久久久久久久| 国产亚洲aⅴaaaaaa毛片| 日韩精品免费看| 日韩精品视频观看| 精品magnet| 亚洲欧美日韩一区二区在线| 国产精品三级美女白浆呻吟| 成人xxxx视频| **欧美日韩vr在线| 久久久噜噜噜久噜久久| 色婷婷综合久久久久| 欧美小视频在线观看| 青青草原成人在线视频| 日韩中文在线中文网三级| 亚洲一区亚洲二区| 成人av在线天堂| 国产精品极品美女粉嫩高清在线| 成人在线精品视频| 国产91对白在线播放| 国产又爽又黄的激情精品视频| 欧美丰满片xxx777| 性欧美长视频免费观看不卡| 久久久久成人网| 日日骚av一区| 久久人人爽人人爽人人片av高请| 欧美日韩美女视频| 久久夜色精品国产亚洲aⅴ| 日韩毛片在线看| 欧美黄色片免费观看| 欧美激情视频给我| 国产69久久精品成人看| 日韩免费不卡av| 欧美精品18videosex性欧美| 欧美激情国产精品| 亚洲国产精品人久久电影| 国产欧美婷婷中文| 日韩av中文字幕在线免费观看| xxxx欧美18另类的高清| 国产亚洲欧美日韩精品| 一本一本久久a久久精品综合小说| 国产日韩欧美成人| 亚洲人高潮女人毛茸茸| 精品毛片三在线观看| 中文字幕亚洲天堂| 日韩有码在线视频| 国产精品一区二区久久精品| 成人激情黄色网| 成人激情在线播放| 欧美激情喷水视频| 国产日韩欧美在线视频观看| 97人洗澡人人免费公开视频碰碰碰| 亚洲国产成人精品久久久国产成人一区| 亚洲欧美成人精品| 欧美性猛交xxxx富婆弯腰| 欧美精品18videos性欧美| 8050国产精品久久久久久| 久久久久久亚洲精品| 国产日韩精品入口| 992tv在线成人免费观看| 精品日韩视频在线观看| 91精品国产高清| 91精品国产综合久久香蕉| 亚洲欧洲av一区二区| 色哟哟亚洲精品一区二区| 国产精品欧美亚洲777777| 91丝袜美腿美女视频网站| 久久成人国产精品| 国产成人精品日本亚洲| 日韩大陆欧美高清视频区| 日韩精品中文字幕在线观看| 欧美福利在线观看| 亚洲欧洲在线免费| 亚洲欧美国产日韩天堂区| 精品久久久久久| 日韩精品在线观看一区二区| 中文字幕欧美在线| 8x海外华人永久免费日韩内陆视频| 尤物九九久久国产精品的分类| 欧美激情视频网| 国产欧美精品一区二区| 91精品视频在线看| 91在线中文字幕| wwwwwwww亚洲| 精品国内产的精品视频在线观看| 亚洲国产欧美日韩精品| 久久久久久久久久国产| 国产精品人成电影在线观看| 精品国产31久久久久久| 国产成人久久久| 欧美插天视频在线播放| 91影院在线免费观看视频| 欧美另类高清videos| 日本一区二区在线免费播放| 欧美精品午夜视频| 97在线视频免费播放| 91色p视频在线| 国产亚洲a∨片在线观看| 国产精品视频专区| 色偷偷91综合久久噜噜| 亚洲精品福利在线| 亚州成人av在线| 日韩欧美在线免费| 久久久精品在线观看| 日韩免费观看av| 欧美整片在线观看| 亚洲国产高清高潮精品美女| 精品福利免费观看| 亚洲精品美女视频| 亚洲人成网站免费播放| 久久久久久九九九| 久久激情五月丁香伊人| 成人激情av在线| 91在线高清视频|