Как предотвратить автоматическое закрытие консоли после выполнения пакетного файла.

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

15 ответов


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

pause

это печатает хороший "Press any key to continue . . . "

или, если вы не хотите, чтобы "Press any key to continue . . ." сообщение, сделайте это вместо этого:

pause >nul

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

нормально pause работает в .летучая мышь!-Файл -6-->.

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


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

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

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

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

С другой стороны pause в конце пакетный файл просто приостановит процесс и завершит 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

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


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

@echo off
cmd /k foo.bat

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


кроме того pause.

set /p=

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

или

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

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


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

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

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

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

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

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


этот маленький хак просит пользователя ввести ключ и сохраняет его в переменной %exitkey% (эта переменная может называться как угодно).

set /p exitkey= "Press any key to continue..."

NB: пространство после ' = ' очень важно


pause

или

echo text to display
pause>nul

если вы используете 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 команда ни одно из прошлых исключений не будет работать.


есть два способа сделать это в зависимости от варианта использования

1) Если вы хотите, чтобы приглашение Windows cmd оставалось открытым, чтобы вы могли увидеть результат выполнения и закрыть его после этого; используйте

pause

2) Если вы хотите, чтобы командная строка Windows cmd оставалась открытой и позволяла выполнять некоторые команды после слов; используйте

cmd

enter image description here


легко, добавьте 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 и просто закрыть окно, и вы не увидите сообщение об ошибке.


Я знаю, что опоздал, но мой предпочтительный способ:

:programend
pause>nul
GOTO programend

таким образом, пользователь не может выйти с помощью enter.