cmd goto命令 流程跳轉

2021-07-25 16:47:08 字數 1614 閱讀 4606

一般的批處理命令,都是按照自上而下的流程逐行執行的,也就是說,只有第一行的命令執行了之後,才可能執行第二行,第二行執行完之後,再執行第三行……如此依次執行。

如果對不同的情況,需要執行不同的既定操作,若還是按照常規的執行流程的話,是無法完成任務的,這個時候,就需要引入流程跳轉的概念,動用流程跳轉語句 goto 了。流程跳轉的含義是:改變預設的執行順序,強制跳轉到指定的位置執行特定的程式塊。

先來看個例子:假設需要判斷使用者輸入的是a還是b,**可以寫成這樣:

複製**

**如下:

@echo off

set /p input=請輸入字母a或b:

if "%input%"=="a" goto a

if "%input%"=="b" goto b

pause

exit

:a echo 您輸入的字母是a

pause

exit

:b echo 您輸入的字母是b

pause

exit   

按照一般的執行流程,所有的**都會自上而下逐行執行一次,結果將顯示"您輸入的字母是a"和"您輸入的字母是b"這兩行內容,很顯然,這是達不到我們的要求的;但是,實際的結果是:如果您輸入的字母非a即b,則結果只會顯示"您輸入的字母是a"或者"您輸入的字母是b";也就是說,**的執行順序發生了改變,不再一成不變地自上而下逐行執行了:當輸入字母a後,將執行第一條if語句,此條語句執行後,將跳轉到標籤段:a,從而繞過了第一條if語句和:a之間的所有**行;當輸入字母b後,將執行頭兩條if語句,當執行完第二條if語句後,將跳轉到標籤段:b,從而繞過了第二條if語句和:b之間的所有**行。

從上面的例子可以看到,要讓goto語句起作用,還需要:a或:b之類的標籤段的配合。所謂的標籤段,就是這樣的一些**塊:在首行上以單個冒號打頭,其後緊跟一串字元,第二行及其之後的所有行為**語句行。在這裡,第一行的冒號是標籤標誌,緊跟它之後的字串是標籤名,兩者合稱標籤。goto語句後面的部分為標籤名,指引著該語句執行完之後該跳到轉何方,標籤則接收goto語句的跳轉指令,引導著goto語句的後續操作。goto語句和標籤互相呼應,在實現流程跳轉時相輔相成,缺一不可。

下面說一下使用跳轉語句goto的注意事項:

1、goto語句和標籤要互相呼應,不能只有goto語句而沒有相應的標籤段,否則,程式將找不到相應的標籤段而直接退出;只有標籤段而沒有goto語句是允許的,但不能實現流程跳轉功能,從**精簡的角度來看,有標籤段而沒有goto語句,則此標籤是多餘的,可以精簡掉;

2、若有多個標籤段,則需要注意標籤段之間是否需要新增合適的退出語句來終止程式繼續向下執行,這是很多新手很容易犯錯的地方,需要謹慎。以上面這段**為例,如果去掉:a和:b之間的exit語句,那麼,當輸入字母a之後,結果將同時顯示"您輸入的字母是a"和"您輸入的字母是b"這兩行內容,而保留exit語句將只會在顯示"您輸入的字母是a"後,按任意鍵推出批處理程式,因為批處理是自上而下逐行執行的,即使用goto語句跳轉之後,在新的位置上,這一執行流程仍然會保持,直到碰上另乙個流程跳轉語句,執行過程並不會在兩個標籤段之間自動終止。

3、標籤名只可以使用常量,而不能使用變數;

4、若有同名的標籤段,將執行位於最頂層的標籤段,其後的標籤段是否得到執行,將視具體的情況加以處理。

您可能感興趣的文章:

vim跳轉命令

ta 跳到下乙個a 前面 fa 跳到下乙個a 大寫的意思相反 另外還有 跳到檔案的 多少 和 跳到第幾列 不過我很少用 上面的都可以加上數字字首 表示第幾個匹配 另外看檔案時 除了pageup pagedown外還有其它的快速鍵 如ctrl f 向前一頁 ctrl b 向後一頁 上面不是重要的 ct...

window命令視窗的跳轉命令 cd

在需要處理不同路徑下的檔案的時候,經常要在命令列模式下切換目錄,這個時候可以使用目錄跳轉命令cd。cd的全稱是change directory,直譯為改變資料夾,也就是跳轉目錄 切換路徑的意思。它後面可以接驅動器符號 完整路徑和相對路徑。一般我們開啟命令列視窗的時候,預設的目錄位於當前使用者所在的路...

git 流程命令

git svn 團隊的 管理工具 git是分布式 git 裡包含本地倉庫 和 遠端倉庫 github gitee 一大波遠端倉庫的集合體 git遠端倉庫 團隊使用在伺服器的倉庫 git本地倉庫 本地建立隨便使用 gui 視覺化工具 gitdesktop sourcetree conrestone v...