[英]How to prevent auto-closing of console after the execution of batch file
我可以在批處理文件末尾放置什么命令以防止在執行文件后自動關閉控制台?
在 Windows/DOS 批處理文件中:
pause
這會打印一個很好的"Press any key to continue . . . "
消息
或者,如果您不希望"Press any key to continue . . ."
消息,請改為:
pause >nul
取決於確切的問題!
通常pause
在.bat文件中完成這項工作。
如果您不希望cmd.exe關閉以便能夠繼續輸入,請在文件末尾使用cmd /k
命令。
如果您希望 cmd.exe 不關閉,並且能夠繼續鍵入,請使用
cmd /k
只是覺得有必要澄清/k
的作用(來自 Windows 網站):
/k
:執行字符串指定的命令並繼續。
因此,在 bat 文件末尾沒有后續命令的cmd /k
只會保持cmd.exe
窗口打開以供進一步使用。
另一方面,在批處理文件末尾pause
只會暫停進程並在第一次按下按鈕時終止cmd.exe
如果您正在使用Maven ,並且您想跳過輸入並阻止控制台關閉以查看結果,您需要在腳本中使用CALL
命令,除了“mvn clean install”。
像這樣會關閉控制台
ECHO This is the wrong exemple
mvn clean install
pause
像這樣控制台將保持打開狀態
ECHO This is the right exemple
CALL mvn clean install
pause
如果您不使用CALL
命令,則過去的示例都將不起作用。 因為由於某種原因,調用另一個批處理文件(在這種情況下是 mvn)時 cmd 的默認行為本質上是用它替換當前進程,這與調用 .exe 不同
以下在批處理文件中使用命令的方式將打開新的命令提示符窗口,並且新窗口不會自動退出。
start "title" call abcd.exe param1 param2
start "title" call xyz.exe param1 param2
在要執行的代碼下方添加cmd.exe
作為新行:
c:\Python27\python D:\code\simple_http_server.py
cmd.exe
我的方法是編寫一個實際的批處理(說“foo.bat”)來完成這項工作; 然后創建另一個“start.bat”:
@echo off
cmd /k foo.bat
當我設置一次性環境變量時,我發現這非常有用。
在批處理文件末尾調用cmd
。
這里的答案有問題,所以我想出了這個,這對我有用(TM):
cmd /c node_modules\.bin\tsc
cmd /c node rollup_build.js
pause
除了pause
。
set /p=
可以使用。它會期待用戶輸入,並在按下輸入時釋放流程。
或者
runas /user:# "" >nul 2>&1
除了不會顯示用戶輸入的任何內容,也不會保留在命令歷史記錄中,這將執行相同的操作。
我知道我遲到了,但我首選的方式是:
:programend
pause>nul
GOTO programend
這樣用戶就不能使用回車退出。
這個小技巧要求用戶輸入一個密鑰並將其存儲到變量 %exitkey% 中(這個變量可以被稱為任何你喜歡的變量)。
set /p exitkey= "Press any key to continue..."
注意:'=' 后面的空格很重要
可能性 1:只需制作 2 個 .bat 文件並寫入第一個文件:
start <filename> // name of 2nd batch file
exit
批處理文件 2 是最終不會關閉的文件。 因此,現在當您打開批處理 nr.1 時,它將啟動第二個並自行關閉。 當第二次完成時,它不會完全關閉(只要你不把退出放在最后)
可能性 2:批處理文件 1:
call <filename>
cls
echo End of file
pause
<any code you want>
當第二個文件結束時,它將再次進入文件 1 並輸出其余部分。 有了它,您甚至可以制作錯誤處理程序。 如果 nr.1 崩潰,它會進入 nr.2 並顯示它
pause
或者
echo text to display
pause>nul
簡單,將 cmd 添加到你的最后一行 bat,但是! 如果您重置或清除系統路徑,則必須使用完整路徑啟動 cmd,例如:
%windir%\system32\cmd.exe
例如,我有一個 bat 文件將 jdk 重置為舊版本,如下所示:
PATH=C:\Program Files\Java\jdk1.6.0_45\bin;C:\apache-ant-1.7.1\bin
SET JAVA_HOME=C:\Program Files\Java\jdk1.6.0_45
%windir%\system32\cmd.exe
由於我重置了系統路徑,所以必須用全路徑運行cmd,否則系統找不到cmd.exe,會運行cmd失敗,直接關閉窗口,看不到錯誤信息.
運行 .exe 文件,然后暫停 cmd
批處理腳本示例:
@echo off
myProgram.exe
PAUSE
帶參數的批處理腳本示例:
@echo off
myProgram.exe argumentExample1 argumentExample2
PAUSE
我添加了@echo off
因為我不想在 cmd 中顯示C:\user\Desktop>myProgram.exe
和C:\user\Desktop>PAUSE
在程序獲取返回值或釋放資源之前,可以在代碼末尾添加getchar ()
進行阻塞
cmd /k cd C:\Projects.....
如果您希望您的 cmd 在特定的長位置打開
添加暫停(如果您不想顯示其他任何內容,請添加)>nul
它應該看起來像:
@echo 關閉
標題不錯
回聲你好
暫停>無
你將看到的只是“你好”
我個人將pause >nul
設置為等待按下一個鍵而不在控制台中顯示任何額外的文本。
使用:調用 yourbatch.cmd
這項工作是否會處理腳本,然后繼續在同一 window(cmd 實例)上彈出其他代碼
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.