溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

dos如何實(shí)現(xiàn)流程跳轉(zhuǎn)

發(fā)布時(shí)間:2021-10-14 14:36:57 來(lái)源:億速云 閱讀:169 作者:小新 欄目:開(kāi)發(fā)技術(shù)

這篇文章主要為大家展示了“dos如何實(shí)現(xiàn)流程跳轉(zhuǎn)”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“dos如何實(shí)現(xiàn)流程跳轉(zhuǎn)”這篇文章吧。

如果對(duì)不同的情況,需要執(zhí)行不同的既定操作,若還是按照常規(guī)的執(zhí)行流程的話,是無(wú)法完成任務(wù)的,這個(gè)時(shí)候,就需要引入流程跳轉(zhuǎn)的概念,動(dòng)用流程跳轉(zhuǎn)語(yǔ)句 goto 了。流程跳轉(zhuǎn)的含義是:改變默認(rèn)的執(zhí)行順序,強(qiáng)制跳轉(zhuǎn)到指定的位置執(zhí)行特定的程序塊。

  先來(lái)看個(gè)例子:假設(shè)需要判斷用戶(hù)輸入的是A還是B,代碼可以寫(xiě)成這樣:
@echo off
set /p input=請(qǐng)輸入字母A或B:
if "%input%"=="A" goto A
if "%input%"=="B" goto B
pause
exit

:A
echo 您輸入的字母是A
pause
exit

:B
echo 您輸入的字母是B
pause
exit

  按照一般的執(zhí)行流程,所有的代碼都會(huì)自上而下逐行執(zhí)行一次,結(jié)果將顯示"您輸入的字母是A"和"您輸入的字母是B"這兩行內(nèi)容,很顯然,這是達(dá)不到我們的要求的;但是,實(shí)際的結(jié)果是:如果您輸入的字母非A即B,則結(jié)果只會(huì)顯示"您輸入的字母是A"或者"您輸入的字母是B";也就是說(shuō),代碼的執(zhí)行順序發(fā)生了改變,不再一成不變地自上而下逐行執(zhí)行了:當(dāng)輸入字母A后,將執(zhí)行第一條if語(yǔ)句,此條語(yǔ)句執(zhí)行后,將跳轉(zhuǎn)到標(biāo)簽段:A,從而繞過(guò)了第一條if語(yǔ)句和:A之間的所有代碼行;當(dāng)輸入字母B后,將執(zhí)行頭兩條if語(yǔ)句,當(dāng)執(zhí)行完第二條if語(yǔ)句后,將跳轉(zhuǎn)到標(biāo)簽段:B,從而繞過(guò)了第二條if語(yǔ)句和:B之間的所有代碼行。

  從上面的例子可以看到,要讓goto語(yǔ)句起作用,還需要:A或:B之類(lèi)的標(biāo)簽段的配合。所謂的標(biāo)簽段,就是這樣的一些代碼塊:在首行上以單個(gè)冒號(hào)打頭,其后緊跟一串字符,第二行及其之后的所有行為代碼語(yǔ)句行。在這里,第一行的冒號(hào)是標(biāo)簽標(biāo)志,緊跟它之后的字符串是標(biāo)簽名,兩者合稱(chēng)標(biāo)簽。goto語(yǔ)句后面的部分為標(biāo)簽名,指引著該語(yǔ)句執(zhí)行完之后該跳到轉(zhuǎn)何方,標(biāo)簽則接收goto語(yǔ)句的跳轉(zhuǎn)指令,引導(dǎo)著goto語(yǔ)句的后續(xù)操作。goto語(yǔ)句和標(biāo)簽互相呼應(yīng),在實(shí)現(xiàn)流程跳轉(zhuǎn)時(shí)相輔相成,缺一不可。

  下面說(shuō)一下使用跳轉(zhuǎn)語(yǔ)句goto的注意事項(xiàng):

  1、goto語(yǔ)句和標(biāo)簽要互相呼應(yīng),不能只有g(shù)oto語(yǔ)句而沒(méi)有相應(yīng)的標(biāo)簽段,否則,程序?qū)⒄也坏较鄳?yīng)的標(biāo)簽段而直接退出;只有標(biāo)簽段而沒(méi)有g(shù)oto語(yǔ)句是允許的,但不能實(shí)現(xiàn)流程跳轉(zhuǎn)功能,從代碼精簡(jiǎn)的角度來(lái)看,有標(biāo)簽段而沒(méi)有g(shù)oto語(yǔ)句,則此標(biāo)簽是多余的,可以精簡(jiǎn)掉;
  2、若有多個(gè)標(biāo)簽段,則需要注意標(biāo)簽段之間是否需要添加合適的退出語(yǔ)句來(lái)終止程序繼續(xù)向下執(zhí)行,這是很多新手很容易犯錯(cuò)的地方,需要謹(jǐn)慎。以上面這段代碼為例,如果去掉:A和:B之間的exit語(yǔ)句,那么,當(dāng)輸入字母A之后,結(jié)果將同時(shí)顯示"您輸入的字母是A"和"您輸入的字母是B"這兩行內(nèi)容,而保留exit語(yǔ)句將只會(huì)在顯示"您輸入的字母是A"后,按任意鍵推出批處理程序,因?yàn)榕幚硎亲陨隙轮鹦袌?zhí)行的,即使用goto語(yǔ)句跳轉(zhuǎn)之后,在新的位置上,這一執(zhí)行流程仍然會(huì)保持,直到碰上另一個(gè)流程跳轉(zhuǎn)語(yǔ)句,執(zhí)行過(guò)程并不會(huì)在兩個(gè)標(biāo)簽段之間自動(dòng)終止。
  3、標(biāo)簽名只可以使用常量,而不能使用變量;
  4、若有同名的標(biāo)簽段,將執(zhí)行位于最頂層的標(biāo)簽段,其后的標(biāo)簽段是否得到執(zhí)行,將視具體的情況加以處理。

以上是“dos如何實(shí)現(xiàn)流程跳轉(zhuǎn)”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

dos
AI