Может ли кто-нибудь сказать мне, какую команду поставить в конце пакетного файла, чтобы предотвратить автоматическое закрытие консоли после выполнения файла?
В пакетных файлах Windows/DOS:
pause
Это печатает приятное сообщение "Press any key to continue . . . "
Или, если вы не хотите сообщение "Press any key to continue . . ."
, сделайте это вместо этого:
pause >nul
Зависит от точного вопроса!
Обычно pause
выполняет задание в файле .bat.
Если вы хотите, чтобы cmd.exe не закрывался, чтобы продолжать печатать, используйте команду cmd /k
в конце файла.
cmd /k
перед вашей командой. & cmd /k
не будет работать.
Если вы хотите, чтобы cmd.exe не закрывался и мог продолжать печатать, используйте
cmd /k
Просто почувствовал необходимость уточнить, что делает /k
(с сайта Windows):
/k
: Выполняет команду, указанную в строке, и продолжает.
Итак, cmd /k
без последующей команды в конце файла bat просто сохранит окно cmd.exe
для дальнейшего использования.
С другой стороны, pause
в конце командного файла просто приостанавливает процесс и завершает cmd.exe
при первой кнопке, нажав
Добавьте cmd.exe
в новую строку под кодом, который вы хотите выполнить:
c:\Python27\python D:\code\simple_http_server.py
cmd.exe
Ниже приведен список команд в командном файле, который откроет новые окна командной строки, а новые окна не будут автоматически выходить.
start "title" call abcd.exe param1 param2
start "title" call xyz.exe param1 param2
Вызвать cmd
в конце командного файла.
мой способ - написать фактическую партию (говоря "foo.bat" ), чтобы закончить работу; затем создайте еще один "start.bat":
@echo off
cmd /k foo.bat
Я считаю, что это очень полезно, когда я устанавливаю одноразовые переменные среды.
cmd /k
(без какой-либо команды) в конец файла foo.bat
и запустить его. Вам не нужен отдельный файл start.bat
.
кроме pause
.
set /p=
. Он будет ожидать ввода пользователем и высвободит поток при нажатии клавиши.
или
runas /user:# "" >nul 2>&1
который будет делать то же самое, если ничего из пользовательского ввода не будет отображаться и не останется в истории команд.
Этот маленький хак просит пользователя ввести ключ и сохраняет его в переменной% exitkey% (эта переменная может быть вызвана тем, что вам нравится, хотя).
set /p exitkey= "Press any key to continue..."
NB: пространство после '=' очень важно
Легко, добавьте cmd в свою последнюю строку летучей мыши, НО! если вы reset или очистите свой системный путь, вы должны запустить свой cmd с полным путем, например:
%windir%\system32\cmd.exe
Например, у меня есть файл bat для reset 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
так как я reset системный путь, я должен запустить cmd с полным путем или система не сможет найти cmd.exe, он не сможет запустить cmd и просто закроет окно, t см. сообщение об ошибке.
Есть два способа сделать это зависит от варианта использования
1) Если вы хотите, чтобы приглашение Windows cmd оставалось открытым, чтобы вы могли увидеть результат выполнения и закрыть его впоследствии; использовать
pause
2), если вы хотите, чтобы приглашение Windows cmd оставалось открытым и позволяло выполнять некоторые последующие команды; использовать
cmd
Я знаю, что опаздываю, но мой предпочтительный способ:
:programend
pause>nul
GOTO programend
Таким образом, пользователь не может выйти с помощью ввода.
Возможность 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 и отображает его
type
pause
чтобы показать:
press any key to continue...
и окно закроется после нажатия клавиши. Чтобы скрыть текст, напечатанный в командной строке, введите
pause>nul