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

Многие компьютерные проблемы решаются с использованием интерпретатора командной строки – этот архаизм, доставшийся Windows от предшественницы, операционной системы MS-DOS, оказался настолько живучим, что и в эру тотального графического интерфейса находит частое применение.

Существует два сценария использования командной строки:

  • вы запускаете терминальное окно, и уже в нём вводите необходимые команды, завершая работу командой exit;
  • вы используете готовый файл (cmd или bat). В этом случае командная строка запускается автоматически и так же самостоятельно закрывается после того, как все команды скрипта отработали.

Последний вариант весьма удобен с пользовательской точки зрения, поскольку минимизирует его усилия. Но у него имеется один существенный недостаток: зачастую команды отрабатываются столь быстро, что вы не успеваете рассмотреть результаты работы батника. А в большинстве случаев это и полезно, и нужно.

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

Почему сразу после запуска команды окно командной строки быстро закрывается и что предпринять, чтобы помешать этому

Как мы уже отмечали, правильный способ использования командной строки – запуск интерпретатора командой cmd из консоли «Выполнить», и последующий ввод команд вручную.

Ввод команды cmd

Увы, многочисленные инструкции, гуляющие в сети, игнорируют эту рекомендацию и советуют пользователям вводить нужные текстовые команды непосредственно в панели «Выполнить». И наивные пользователи свято верят в то, что используют командную строку правильно. На самом деле это не так. После ввода команды в окно «Выполнить» (которое в Windows 10/11 запускается нажатием ПКМ по кнопке «Пуск», а в версиях ОС ниже – использованием комбинации Win+R) и нажатия Enter действительно происходит запуск командной строки и отработка самой команды. Но если результат работы введённой команды таков, что не требует никаких действий от пользователя, окно КС после этого сразу закроется. И это происходит в абсолютном большинстве случаев, даже если в ходе выполнения команды нужно нажимать какие-то клавиши.

Запуск командной строки от имени администратора

Точно такой же порядок действий получится при запуске bat-файла с единственным отличием: в таком батнике можно прописать последовательное выполнение любого количества команд. Но результат будет аналогичным: если самими командами не предусмотрено наличие каких-то пауз, то после их выполнения окно с чёрным экраном сразу закроется. Независимо от того, успели вы заметить, что произошло, или нет.

При ручном открытии КС сначала запустится окно терминала, в котором нужно ввести команду или набор команд. В этом случае командная строка после выполнения этих команд не закрывается. То есть у вас появится возможность внимательно изучить результаты отработки скрипта или команды, и только после этого закрыть терминальное окно, набрав exit и нажав Enter (или просто щелкнув мышкой по крестику в правом верхнем углу окна терминала).

Но что делать, если инструкция требует запуска bat-файла (двойным кликом по нему), а вам нужно, чтобы после отработки сценария окно не закрывалось, поскольку там будут отражены результаты работы скрипта?

Самый очевидный способ – сначала запустить интерпретатор командной строки, а уже в нём указать полный путь к bat-файлу, после чего нажать Enter. Если вы не ошиблись с указанием этого пути (в конце обязательно должно стоять наименование файла с его расширением), что случается достаточно часто, то результат вас удовлетворит: команда будет выполнена, а окно терминала после этого не закроется.

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

Есть и другой способ, хотя и он потребует от вас некоторых нетривиальных действий, а конкретнее – правки этого батника. Делается это посредством запуска любого текстового редактора (например, Блокнота). От вас потребуется в конце файла добавить строку и ввести команду pause.

Команда pause в Блокноте

Команда pause приостанавливает выполнение последовательности команд с выводом в окно терминала текста «Для продолжения нажмите любую клавишу…». Таких команд может быть много, в результате продолжение выполнения скрипта вплоть до его закрытия будет происходить только после нажатия вами какой-нибудь клавиши.

Надпись «Для продолжения нажмите любую клавишу…»

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

Команда cmd/k в Блокноте

При этом вы как бы перезапускаете КС, то есть результаты выполнения предыдущих команд будут стёрты. В этом плане использование pause будет предпочтительнее.

Действие команды cmd/k

Самопроизвольное открытие и закрытие командной строки

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

Если командная строка самопроизвольно открывается и закрывается лишь изредка, то, скорее всего, это связано с работой операционной системы, и волноваться по этому поводу не следует. Подобная активность часто проявляется при выполнении обновлений Windows или в результате настройки работы её служб, требующих для завершения процесса запуска команд в режиме интерпретатора командной строки.

Переход в Планировщик заданий в Windows 10

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

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

Планировщик заданий в Windows

Для начала следует проверить, какие программы присутствуют в автозагрузке, не мешает проинспектировать и планировщик заданий. Если вы найдёте строку, начинающуюся с cmd.exe с указанием параметров после этого текста, то это, скорее всего, и есть причина запуска КС. Чтобы убедиться в этом, отключите строку в Автозагрузке, убрав справа галочку, и сделайте то же самое в Планировщике. Если запуски командной строки прекратятся, а работа операционной системы останется стабильной, подозрительные строки можно удалить навсегда.

Вкладка «Автозагрузка» в Windows 10

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

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

Команда regedit в Windows 10

Итак, запускаем командой regedit редактор системного реестра и переходим по пути

HKCR\batfile\shell\open\command.

Папка command в реестре

По умолчанию для этой ветки установлен единственный параметр со значением

"%1" %*

Значение параметра в папке command

Его нужно заменить на

cmd.exe /k "%1" %*

Изменение значения параметра в папке command

Точно такие же манипуляции производим с веткой HKCR\cmdfile\shell\open\command.

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

  • ВКонтакте
  • обычная форма
  • Евгений:

    Кстати, есть способ поставить выполнение скрипта из командной строки на паузу без появления этого дурацкого сообщения «Press any key to continue». В конце батничка нужно поставить не pause, а pause >nul. Я всегда так делаю.

    Оставить комментарий

сети
программы
Smart TV
ос