經過學習Batch入門教程的前兩章內容,咱們已經大體掌握了基本概念和認識變量的相關內容,今天咱們要跟你們繼續分享第三章內容:Batch入門教程之邏輯判斷。html
前期回顧 小程序
◀Batch入門教程丨部署與Hello World(上)學習
◀Batch入門教程丨部署與Hello World(下)測試
邏輯判斷htm
邏輯判斷(Logical Judgement),是指使用if指令或者其它判斷指令進行判斷並控制流程進行的一種方式,它是程序的重要組成部分。在Batch中,咱們大部分時間都會選擇使用if,此外還有邏輯判斷符號||和&&存在。blog
if教程
if 能夠判斷變量與值、變量與變量、值與值的關係,基本語法以下:ci
其中,if語句所使用的代碼塊須要使用()括起來,而不是像其它語言那樣的{}。另外,Batch內沒有else if的用法,所以,若是您想要使用else if,那麼您可能須要這樣寫:部署
也就是說,您必須在else後的代碼塊裏寫if而不是直接緊跟在後面寫if。
當您初次看見這個判斷語法時,可能認爲很荒謬。爲何沒有括號?就像其它語言那樣:
這是Batch的個性。若是您先前對if語句沒有絲毫的瞭解,能夠看一下下面這個奇妙的公式:
例如,咱們要判斷1是否等於2,咱們就能夠這樣寫:
其中else語句可要可不要,若是不須要,則會出現兩種寫法:
若是您是縮進愛好者,能夠選擇前者。後者可讓您的代碼在單行中看起來更簡潔,可是後者不能用else。
if not
與其它語言類似,Batch也有判斷非的方式,只不過並非用的!=而是更直接了當的if not,它的用法與if沒有區別,只是對結果取反而已。
if / not defined
if not defined和if defined用於測試一個變量是否被定義,if not defined的成立條件是沒有定義,if defined的成立條件是已經定義。在if not defined ()後面加上else就至關因而if defined了,原理很好理解。
用法:
實例:
if defined則相反。
固然,咱們也能夠用if來實現if not defined的效果:
也就是說if "%變量名%"==""至關於if not defined變量名。可是大多數狀況下,咱們建議選取後者使用,由於這樣更加規範,前者不知道會不會有Bug。
if / not exist
if exist和if not exist也是相反的一對判斷。它們判斷某文件是否存在。用法:
它們也可使用else。
if 的數字判斷
與set同樣,if也有專用於數字的用法。咱們能夠比大小。如下是一個簡單的比較大小程序:
用if比較大小的關鍵在於中間的符號。咱們判斷兩個值相等可使用==,可是必須須要先後二者加上引號。而咱們能夠直接使用表達數學關係的字母簡稱來表明數字之間的關係(其它的,諸如字符之類的,不能用,只能用==)。
如下是Batch中判斷數字關係的字母簡稱:
咱們就能夠用非負性原理來判斷數值之間的關係:
if %ERRORLEVEL%
%ERRORLEVEL%是一個環境變量,它在不一樣的指令執行後會有不一樣的值。如下列出一些特殊狀況的%ERRORLEVEL%值。
注意:ERRORLEVEL是一個很是奇妙的東西,在有些時候它甚至能夠等於任何值,沒人知道它到底能等於多少。上表列出來的只是一些常見的、較爲穩定的錯誤代碼。ERRORLEVEL通常不會等於32。
若是咱們要判斷ERRORLEVEL,咱們直接使用數學判斷語句便可:
咱們可使用前面提到過的exit /b和if %ERRORLEVEL%來完成程序之間的傳參工做,這將在「調用與參數」中講到。
邏輯判斷符
Batch的邏輯判斷符(Logical Judge)分爲兩種:||與&&,它們並非如三元運算符(Ternary Operator)同樣發揮着if else的做用,而是用來判斷指令是否執行成功。
它的用法是直接接在須要判斷的指令後面:
||表明,若前面的指令不成功,則執行後面的指令,&&相反,若前面的執行成功,則執行後面的指令。它們能夠連用,可是若是混用着連用,很容易產生奇怪的Bug,所以筆者不建議連用。
咱們可使用邏輯判斷符完成不少工做,例如,咱們判斷用戶的輸入是否爲數字,來提早避免處理過程當中出現沒必要要的問題。
若是a不是數字,@set /a c=b+1a就會出現問題,因而就會被||檢測到,隨即執行後面的指令。不過,爲何不寫成set /a c=b+a呢?由於若是單純地將一個非數字的變量寫入表達式中,會被直接看做是0,當再加上一個數字的時候,就至關於想要把1a這個數字字母組合當作數字,這是不可能的,因而天然會失敗。
至於爲何要添加@,這是爲了不回顯的失敗信息。由於一個指令執行失敗後一定會有失敗信息,而咱們正是在取代失敗信息,所以咱們不須要系統的失敗信息。固然若是您須要能夠把@去掉。
以上是今天與你們分享的內容,若是對你有幫助,記得收藏啊,下期內容咱們將繼續探討Batch入門教程中的進階知識,記得關注哦!