Командная консоль закрывается сама: как исправить?

Командная консоль закрывается сама: как исправить?

05.10.2021 0 Автор GodKnowses

Командная консоль закрывается сама после запуска.

Приветствую страждущих, сегодня разберём вопрос о том, что можно предпринять, если запущенная вами командная консоль закрывается после выполнения работы, не сообщая более ни о чём. Давненько я разбирал вопрос о появляющейся на миг (обычно в период запуска Windows) и тут же захлопывающейся консоли. Там природа проблемы лежала в другой плоскости. Здесь же подразумевается, что консоль cmd запускается нарочито с вашего ведома (чаще в виде некоего батника). Но если та сразу закрывается, это не всегда удобно, если мы ожидаем ввода следующей команды или вывода результатов того, как батник отработал.

Если командная консоль закрывается самостоятельно, мы можем:

  • дополнить батник командой Pause
  • добавить к запуску «вечный» операнд /k
  • изменить поведение консоли через реестр

Учтите, что при применении этих настроек консоли впредь придётся указывать на то, чтобы та закрылась отдельной командой. Или ей придётся ожидать действий пользователя.

Добавим команду «Пауза»

Фиксируя в скрипте команду Pause, та не позволит окну консоли захлопнуться, выводя на экран консоли финишным сообщение о приглашении на что-нибудь нажать для выхода. Регистр букв значения не имеет, а для нашей цели команду можно поставить в самый конец батника. Он, конечно, должен быть доступным для редактирования. И для этой цели подойдёт любой из текстовых редакторов. Не забываем сохранить изменения. Чтобы не было проблем с расширением файла, перед закрытием зажмём горячие клавиши Ctrl + S. Сравните поведение батников с простыми скриптами:

@ECHO OFF
TITLE CMD OFF
cd C:\Windows\System32\
start notepad.exe

против

@ECHO OFF
TITLE CMD ON
cd C:\Windows\System32\
start notepad.exe
pause

У способа небольшие допущения — к файлу должен быть прямой допуск по редактированию. Кроме того, команда позволяет увидеть процесс исполнения основных команд. Но если нужно, чтобы консоль оставалась открытой для отображения остальных команд, лучше использовать следующий способ.

Команда cmd /k

Именно она и позволяет исполнять вновь добавляемые команды после того, как сам батник отработает. Консоль останется открытой и при этом готовой к вводу следующей команды пользователя. Откроем для этого батник для редактирования редактором и добавим «cmd /k» финишной строкой.

@ECHO OFF
TITLE CMD
cd C:\Windows\System32\
start notepad.exe
cmd /k

окно cmd готово к следующей команде

Настройки консоли в реестре

Оба описанных метода одинаково просты, но и требуют индивидуального подхода: файлы необходимо редактировать вручную, добавляя указанные команды. Есть способ попробовать заставить консоль вообще не закрываться, пока пользователь не закроет окно принудительно. Для этого откроем редактор реестра

regedit

и найдём пару ключей

HKEY_CLASSES_ROOT\batfile\shell\open\command

и

HKEY_CLASSES_ROOT\cmdfile\shell\open\command

В каждом из них есть параметр По умолчанию. Значение этих параметров отображается как «%1» %*. Обоим нужно присвоить значение, добавив имя исполнительного файла слева:

cmd.exe /k «%1» %*

незакрывающееся окно cmd

Теперь окно консоли закроется только по команде самого юзера.

Успехов.