一日一教學 (27)退出CMD視窗 exit

2021-08-10 13:30:57 字數 1772 閱讀 6071

幫助資訊:

退出 cmd.exe 程式(命令直譯器)或當前批處理指令碼。

exit [/b] [exitcode]

/b          指定要退出當前批處理指令碼而不是 cmd.exe。如果從乙個

批處理指令碼外執行,則會退出 cmd.exe

exitcode    指定乙個數字號碼。如果指定了 /b,將 errorlevel

設成那個數字。如果退出 cmd.exe,則用那個數字設定

過程退出**。

複製**

命令概括:

exit,意為「退出」;

/b,全英文batch(不確定);

code,意為「**」,exitcode就是「退出碼」;

引數詳解:

1.退出命令直譯器;

指令碼的執行都依賴直譯器,批處理依賴cmd.exe,vbs依賴wscript.exe,沒有直譯器,指令碼都不能執行。

@echo off

echo hello

exit

echo world

pause

複製**

exit 是退出直譯器,造成world不顯示,pause不執行。

2.退出當前批處理指令碼;

乍一看,覺得和第一沒什麼區別,但事實上區別很大。

試著執行下面的**,比較其中差別:

儲存兩個批處理,分別命名test、a;執行test.bat;

test.bat

@echo off

echo 這是test.bat

echo 呼叫a.bat之前的狀態

call a.bat

echo 呼叫a.bat之後的狀態

echo %errorlevel%

pause

複製**

a.bat
@echo off

echo.

echo 這是a.bat檔案

echo.

exit /b

複製**

現在把a.bat的內容替換成:
@echo off

echo.

echo 這是a.bat檔案

echo.

exit /b 12

複製**

再次執行test.bat

如果你細心的話,就會發現errorlevel的值變了,預設是0,/b 12之後就是12了。

沒錯,exit [/b] [exitcode]中[exitcode]就是用來設定,退出碼errorlevel的值。

那麼/b又有什麼用呢?

正如那句話所說,

要知道一件事物的重要性,那就看看沒有這件事物時世界會是怎樣。

繼續將a.bat的內容替換:

@echo off

echo.

echo 這是a.bat檔案

echo.

exit

複製**

再次執行test.bat

結果,黑框一閃而過,因為這三條語句都沒有執行,

echo 呼叫a.bat之後的狀態

echo %errorlevel%

pause

複製**

因此exit /b是用來退出批處理指令碼的,而exit是用來退出直譯器的;

可以這麼理解,exit /b 退出子程序,而exit則退出父程序,子程序結束不影響父程序的執行,但是父程序結束那就是徹底的結束。

(當然,如果只有乙個程序,exit /b也是能結束父程序的)。

exit /b 一般和call 一起使用。

一日一教學 (14)檔案替換 replace

幫助資訊 替換檔案。replace drive1 path1 filename drive2 path2 a p r w replace drive1 path1 filename drive2 path2 p r s w u drive1 path1 filename 指定原始檔。drive2 p...

一日一結2012 5 2

今天去圖書館把作業系統概念借到了,期待很久,欣喜萬分。專業知識部分 今天主要學習了一下mfc六大關鍵技術,感覺講得不錯。主要的例子是以基於文件類的程式,感覺學到了東西。以前看孫新老師的書時是有點半知不解,看了這個資料讓我對mfc程式的內部有了更深一層的理解。課外知識部分 看完10000小時code ...

一日一結2012 5 6

今天天氣很熱,感覺已經進入夏天。看了galaxy 3 效能評測,不錯。專業知識部分 今天看了作業系統概念的虛擬記憶體,了解了虛擬記憶體的概念和原理,虛擬記憶體這種記憶體管理技術允許執行程序不必完全在記憶體中。而且,虛擬記憶體將記憶體抽象成乙個巨大的 統一的儲存陣列,進而將使用者看到的邏輯記憶體和物理...