簡體   English   中英

如何防止執行批處理文件后自動關閉控制台

[英]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 並顯示它

有兩種方法可以做到這一點取決於用例

1)如果您希望Windows cmd提示保持打開,以便您可以看到執行結果並在之后關閉它; 利用

pause

2)如果您希望 Windows cmd 提示符保持打開狀態並允許您執行一些命令后綴; 利用

cmd

在此處輸入圖像描述

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.exeC:\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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM