Как предотвратить автоматическое закрытие консоли после выполнения пакетного файла.
может кто подскажет, какую команду поставить в конце пакетного файла, чтобы предотвратить автоматическое закрытие консоли после выполнения файл?
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
мой способ-написать фактическую партию (говоря " 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: пространство после ' = ' очень важно
если вы используете 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
легко, добавьте 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.