Как предотвратить автоматическое закрытие консоли после выполнения командного файла - PullRequest
461 голосов
/ 12 июня 2009

Какую команду можно поставить в конце командного файла, чтобы предотвратить автоматическое закрытие консоли после выполнения файла?

Ответы [ 16 ]

587 голосов
/ 12 июня 2009

В пакетных файлах Windows / DOS:

pause

Это печатает хорошее "Press any key to continue . . . " сообщение

Или, если вам не нужно сообщение "Press any key to continue . . .", сделайте это вместо:

pause >nul
131 голосов
/ 12 июня 2009

Зависит от точного вопроса!

Обычно pause выполняет работу в файле .bat .

Если вы хотите, чтобы cmd.exe не закрывался, чтобы продолжать печатать, используйте команду cmd /k в конце файла.

59 голосов
/ 22 января 2015

Если вы хотите, чтобы cmd.exe не закрывался и мог продолжать печатать, используйте cmd /k

Просто почувствовал необходимость уточнить, что делает /k (с веб-сайта Windows):

/k: Выполняет команду, указанную в строке, и продолжает.

Так что cmd /k без команды продолжения в конце файла bat просто оставит окно cmd.exe открытым для дальнейшего использования.

С другой стороны, pause в конце командного файла просто приостановит процесс и завершит cmd.exe при первом нажатии кнопки

.
21 голосов
/ 05 октября 2016

Приведенный ниже способ размещения команд в командном файле откроет новые окна командной строки, и новые окна не закроются автоматически.

start "title" call abcd.exe param1 param2  
start "title" call xyz.exe param1 param2
11 голосов
/ 16 ноября 2014

Добавьте cmd.exe в качестве новой строки под кодом, который вы хотите выполнить:

c:\Python27\python D:\code\simple_http_server.py

cmd.exe
9 голосов
/ 04 января 2017

Мой способ - написать реальную партию (говоря "foo.bat"), чтобы закончить работу; затем создайте еще один "start.bat":

@echo off
cmd /k foo.bat

Я считаю, что это очень полезно при настройке одноразовых переменных среды.

8 голосов
/ 18 октября 2014

Вызовите cmd в конце пакетного файла.

7 голосов
/ 06 сентября 2018

Если вы используете Maven и хотите пропустить ввод и не допустить закрытия консоли, чтобы увидеть результат, вам нужно использовать команду CALL в сценарии, кроме только 'mvn clean установить».

Как это закроет консоль

ECHO This is the wrong exemple
mvn clean install
pause

Вот так консоль останется открытой

ECHO This is the right exemple
CALL mvn clean install
pause

Если вы не используете команду CALL, ни один из приведенных примеров не будет работать.

5 голосов
/ 15 февраля 2015

кроме pause.

set /p=

может использоваться. Он будет ожидать ввода данных пользователем и будет освобождать поток при нажатии Enter.

или

runas /user:# "" >nul 2>&1

, который будет делать то же самое, за исключением того, что ничего из пользовательского ввода не будет отображаться и не останется в истории команд.

3 голосов
/ 17 ноября 2016

Возможность 1: Просто создайте 2 .bat файла и напишите в первый:

start <filename> // name of 2nd batch file
exit

Пакетный файл 2 - это файл, который в конце не закроется. Так что теперь, когда вы открываете пакет № 1, он начнет 2-й и само одеться. Когда второе закончится, оно не закроется полностью (если вы не поставите выход в конце)

Возможность 2: Пакетный файл 1:

call <filename>
cls
echo End of file
pause
<any code you want>

Когда второй файл завершится, он снова перейдет к файлу 1 и выведет остаток. С этим вы даже можете сделать обработчики ошибок. В случае сбоя nr.1 он переходит в nr.2 и отображает его

...