it-swarm.com.ru

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

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

459
joe

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

pause

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

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

pause >nul
586
Dave Bauman

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

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

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

131
Rutger Nijlunsing

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

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

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

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

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

59
Valentine Stone

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

start "title" call abcd.exe param1 param2  
start "title" call xyz.exe param1 param2
21
user6928445

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

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

cmd.exe
11
lyfing

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

@echo off
cmd /k foo.bat

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

9
Erich Chen

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

8
user4155296

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

7
Andrey Hartung

кроме pause.

set /p=

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

или же

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

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

5
npocmaka

Возможность 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 и отображает его

3
BlazeLP

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

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

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

2
Steven Mark Ford

У меня были проблемы с ответами здесь, поэтому я придумал это, который работает для меня (ТМ):

cmd /c node_modules\.bin\tsc
cmd /c node rollup_build.js
pause
2
lama12345
pause

или же

echo text to display
pause>nul
2
Zenedus

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

:programend
pause>nul
GOTO programend

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

2
decadenza

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

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

pause

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

cmd

enter image description here

1
Hitesh Sahu

Легко, добавьте cmd к своей последней строке летучей мыши, НО! если вы сбрасываете или очищаете системный путь, вы должны запустить 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 и просто закроет окно, и вы не увидите сообщение об ошибке msg ,.

0
Wei Kleeff