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



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

726   15  

15 ответов:

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

pause

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

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

pause >nul

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

нормально pause работает в .летучая мышь.

Если вы хотите 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 prompt оставался открытым, чтобы вы могли видеть результат выполнения и закрыть его после этого; используйте

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.

Comments

    Ничего не найдено.