Batch入門教程丨第一章:部署與Hello World!(下)

 

在上期分享的內容中,我們已經掌握了基礎理論知識,今天我們將繼續瞭解和學習與Windows Batch有關的知識和編程方法,如何編寫和運行Windows Batch程序,腳本語言的入門方式等,從而能夠更加順利地投入到今後的開發和探究中。

 

上期內容回顧>>Batch入門教程丨部署與Hello World(上)

 

入門

入門,進入門,進入這扇門,進入這樣一扇(門框+門板+門鈴+門鎖),使用腳的指定部位完成動作以進入主函數,kkkkk。

 

入門概述

入門是一切的起點,這些我們都知道。在入門這一章節中,您將首先接觸三個簡單的指令:echo、pause、exit。這些指令足夠您編寫一些能夠顯示信息(例如顯示Hello World!)的程序,但是卻遠遠不夠於正常編程。當然,一切都是來源於基礎的,所以本章節可以算是比較重要的。

 

重要的並不在於內容,而是理解。如果您看不懂本章節的某些句子,您可以嘗試多讀幾遍,努力去理解。如果您實在無法理解,歡迎告訴筆者,筆者會一一詳細回覆的。

 

Hello World!

Hello World!,這可能是每一個入門者都會編寫的第一個程序。它們往往只是一個簡單的輸出,但是卻代表着無數的成功和無法比擬的喜悅。在Batch中,您也可以編寫Hello World。

 

創建Batch文件

創建Batch文件有很多種,但是本質就是更改擴展名。在Windows 10系統中,若要顯示擴展名,請在資源管理器中這樣選擇:

 

 

如果您使用是Windows 7,請按照如下方法進行(用Windows 10來演示):

 

 

這樣,您的文件就會多出了一個擴展名後綴,創建批處理文件就簡單了。首先,右鍵選擇“新建”- “新建文本文檔”:

 

 

然後將您的文本文檔重命名,將.txt後綴更改爲.bat 或者.cmd。這兩者只有名稱上的區別,相信我。

 

在彈出的對話框選擇“確定”。這個對話框的意思是說,避免您誤更改了擴展名,又忘記了原先的擴展名,那麼就不能再運行以前的程序了。

 

 

這樣,您就得到了一個嶄新的Batch文件!我們右鍵它,選擇Open with Code,這樣就來到了它的編輯頁面:

 

 

開始編寫

接下來我們可以輸入我們的代碼了:

 

 

這是一行echo指令,它的參數是後面的一大串信息Hello World!。這是最簡單的指令之一,它的作用是將後面的參數直接當作迴響打印出來。與其它指令不一樣,echo的參數即使有空格也不會被錯誤識別,因爲它的作用實在是太簡單了,因此不可能會有多個參數。

 

最後一行是exit指令,即退出。這是一個流程控制性指令,它的作用是對會話進行結束,常常表現爲關閉窗口。我們給出定義:

 

流程控制性,是指對編程處理的流程有控制作用的指令,例如exit爲退出,call 爲轉入,pause爲暫停。

 

爲了避免本系列的內容定義過多導致冗雜,筆者在以後的正文中會避免使用新的名詞。

 

我們的Hello World完成了,接下來我們進入對單獨指令的深度剖析中。

echo

echo是一個回顯指令,它用來打印一些內容,例如,執行。

需要注意的是,echo不能輸出off或者on(但是可以輸出類似於offer,is on 之類的含它們的組合)。

關閉回顯

爲了避免源碼在執行過程中會被輸出,我們通常關閉回顯。上文中的Hello World程序在沒有關閉回顯的時候是這樣的:

 

 

這可不是我在打指令,而是整個批處理文件運行的結果。這些就叫做“回顯”。

 

但是當我們在開頭加入echo off(沒有@),情況就不一樣了:

 

 

我們得到了與先前類似的輸出,但是我們卻發現echo off本身的執行依然看得到回顯,這樣我們的@就起到作用了,它隱藏單條指令的回顯。

 

這也就意味着我們在最開頭加上@echo off就相當於是把每一行指令前面都加上@。

pause

pause在上面已經作了解釋,但是它的原理並沒有我們說的那麼複雜。在help中對它的解釋只有一行,示例一行:

 

Suspends processing of a batch program and displays the message

 

Press any key to continue . . .

 

就是顯示按任意鍵繼續... 並暫停執行的一個指令。

 

exit

exit執行後會退出當前會話,因爲沒有其它的特殊措施,所以一般表現爲窗口被關閉。但是如果一個批處理是被調用的:

 

注:call指令會在以後的進階中學到,現在您只需要知道它是一個可以調用其它批處理文件的指令,也就是說可以在一個批處理文件中執行另一個批處理而不打開新的窗口。

 

這樣做,一旦調用b.bat就會直接退出(不是退出b.bat而是退出整個程序,即關閉窗口),因此我們得到的還是一個閃框(我們以後就叫“突然閃過的黑色或者其它別的顏色的一個控制檯窗口”爲閃框吧!)。

 

但是當我們把b.bat裏的exit加入一個參數:/b 233

這樣我們得到的結果就不一樣了。我們居然停留住了整個窗口,並且顯示This is B!和按任意鍵繼續...這是爲什麼呢?

 

退出當前進程

參數/b指定一個退出的代碼,稱爲exitCode。exit /b [exitCode] 類似於其它語言中函數的return一樣,返回一個值(不過 exitCode 只能爲數字),並且執行以後進程就結束了。

 

如果你不清楚其它語言中函數的return也沒關係,看看下面這個例子:

類似。

 

如果我們不加上這個參數(/b),那麼退出的會是整個程序。但是我們加上,我們退出的就僅僅是當前的程序。如果我們單獨執行b.bat,我們得到的是一個閃框,因爲它本身被自己的exit給結束了。但是當我們用a.bat去調用b.bat的時候,exit /b 233只會退出當前程序,於是b.bat調用後遇到了exit /b 233,退出了b.bat,繼續執行a.bat的call下面的代碼,即pause。

 

上述我們的流程用圖來表示是這樣的:

 

 

但是如果我們在b.bat裏的exit沒有帶上/b參數,它退出的將是整個程序:

 

 

此外,exitCode還有另外的作用。例如上面,我們執行了exit /b 233,則代表我們的exitCode就是233,這樣,在a.bat內的%ERRORLEVEL%會被設置爲這個exitCode即%ERRORLEVEL% == 233。

 

至此,入門部分就結束了。接下來我們將學習的是進階,在後續的進階文章分享中,您將會學習到更多的流程管理,以及有關邏輯判斷等知識,大家敬請期待。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章