命令提示字元 09:條件判斷

看到標題很多人就知道這章在做什麼了,對,就是「if」:

if

說明真長啊!先拿一個簡單的例子:

if "Test"=="Test" echo Equal.
if "Test"=="test" echo Equal.

由上面的例子可以看出大小寫有分;而符號「"」在說明裡面有說不一定要加,但對字串加「"」是個好習慣。

if not "Test"=="Test" echo Equal.
if not "Test"=="test" echo Equal.

「not」也解釋完了,說明有寫,但那種說明看完了還是不會用。接下來來對數字比較:

if 3 equ 3 echo Equal.
if 3 lss 3 echo Equal.
if 3 geq 3 echo Greater or Equal.

中間的比較方法在說明裡面都有寫;另外大家是普遍用大寫的比較方法(如 EQU),但個人不喜歡。

if exist C:\ echo Exist.
if exist . echo Exist.
if exist C:\.. echo Exist.

「exist」在說明裡面已經有說了,就是測試某個目錄或檔案在不在。第一個「C:\」當然在,第二個「.」代表自己的資料夾也當然在,第三個「C:\..」可以去 C:\ 再切換到 .. (C:\> cd ..)會發現還是在 C:\ 中喔,不要被騙了。

if not "Test"=="Test" (echo Equal.)
if not "Test"=="Test" (
echo Equal.
)

上一章已經有提到副函式了,在命令提示字元中其實沒有到「函式」這麼嚴謹啦,理解上可以認為它是要一起做的事,因為命令提示字元一次執行一行,而它又不可能會判斷哪裡要結束,所以要括弧來讓程式知道它是一起的。像第二個範例先打左括弧時命令提示字元知道還沒有結束,所以問「More?」有沒接下去的程式碼,接下去直到右括弧出現時它才知道結束了,去執行。而實務上這多用在批次檔,如:


可以看出批次檔中雖然是三行,但執行時卻縮短成一行,意義上是一樣啦。若加上傳說中的「else」使用:

if "Test" == "Test" (echo Equal.) else (echo Not Equal.)
if "Test" == "test" (echo Equal.) else (echo Not Equal.)

「else」是很重要的使用方式。在說明裡面有提到括弧要注意的地方,很好理解,所在這裡直接給結論:

只有條件為真且執行一行才不用括弧,其它請括弧。

在使用「else」時,上一副函式右括弧和「else」和上一副函式左括弧而在同一行,即「) else (」,這是可以理解的,因為命令提示字元是一次讀取一行,所以需要明確知道哪裡結束。

if defined username echo Defined.

這個東西是下一章的東西,它其實,呃,沒用過。主要的目的是看某個變數有沒有宣告過,實作上有可能會用到,所以就擺上來了。



條件判斷好像沒有比上一章難啊!其實有一些沒有說,如「%errorlevel%」,它是到變數那章會說;又如「/i」,呃,沒用過,說明有說可以用二個等於取代。這章其實沒有那麼多東西可以記,「if」使用機率本來就不高,使用上又不囉嗦,所以問題不大。下二章是小重點,需要理解記憶的比較多。



下一章:變數指令




  • 2012-09-11 初次發佈。
  • 2017-07-12 更新成 Windows 10 的版本。

沒有留言:

張貼留言

定時會整理。