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


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

Во многих инструкциях на сайте для выполнения действий предлагается использовать команды в командной строке, в некоторых случаях — bat файл. Один из частых комментариев к таким материалам: командная строка сразу закрывается и нельзя ничего успеть увидеть.

В этой статье подробно о том, почему командная строка сразу закрывается, что делать, чтобы она не закрывалась применительно к Windows 11 и Windows 10 (актуально и для предыдущих систем), а также дополнительная информация на тему.

  • Командная строка закрывается сразу после выполнения команды
  • Если командная строка открывается и закрывается сама
  • Видео

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

Рассмотрим два случая, когда командная строка закрывается:

  • После выполнения введённой команды
  • После выполнения bat-файла

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

  1. Если вводить команду в окно «Выполнить» (вызываемое клавишами Win+R, либо через правый клик по кнопке «Пуск» в случае Windows 11 и 10), окно командной строки откроется и закроется сразу после выполнения, если дальнейший ввод пользователя не требуется.
  2. Если запустить непосредственно командную строку (Как открыть командную строку, Запуск командной строки от имени администратора), и ввести команду уже в ней, автоматическое закрытие окна происходить не будет, и вы увидите, что именно выдает команда в результате выполнения.

В случае выполнения bat-файла, если команды в нём не требуют ввода пользователя и не содержат команд паузы до нажатия клавиши пользователем, то при запуске (простым двойным кликом из расположения файла) и успешном выполнении, окно командной строки будет автоматически закрыто.

Если вы хотите иметь возможность прочитать ход выполнения и результат работы bat-файла, вы можете:

  1. Открыть командную строку (как во втором пункте выше), указать путь к bat-файлу и нажать Enter. Он будет запущен и выполнен, но командная строка не будет закрыта после выполнения.
  2. В конце файла добавить команду PAUSE (сделать это можно в любом текстовом редакторе, подробнее: Как создать bat файл в Windows). В этом случае после выполнения любым способом окно не закроется пока вы не нажмете любую клавишу.

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

  • Если это происходит не часто, вероятнее всего речь идёт о простой работе Windows: система может выполнять отдельные действия по завершении установки обновлений, обслуживанию и первоначальной настройке системы после установки инициируя запуск команд через командную строку.
  • В некоторых случаях завершение установки или удаления программ (в том числе после перезагрузки компьютера) выполняется с помощью командной строки — в этом сценарии появление окна командной строки также не будет регулярным.
  • При постоянном открытии и закрытии окон командной строки при включении компьютера или во время работы, следует проверить программы в автозагрузке и планировщике заданий: если там запускается cmd.exe с какими-либо параметрами, постараться разобраться, что именно, возможно — удалить из автозагрузки либо отключить задание в планировщике заданий. Чуть более подробно о процессе поиска в статье про ситуацию, когда сам открывается браузер с рекламой (даже если у вас это не происходит, логика та же). Также может иметь смысл использовать средства удаления вредоносных программ для поиска и удаления нежелательного ПО с компьютера.

Видео

remontka.pro в Телеграм | Способы подписки

Поддержать автора и сайт

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

HKCR\batfile\shell\open\command.

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

"%1" %*

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

cmd.exe /k "%1" %*

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

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

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

спросил

Изменено 3 месяца назад

Просмотрено 890 тысяч раз

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

  • окна
  • командная строка
  • пакетный файл

2

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

 пауза 

Это напечатает красивое "Нажмите любую клавишу, чтобы продолжить. .." сообщение

Или, если вы не хотите, чтобы "Нажмите любую клавишу, чтобы продолжить..." Сообщение , вместо этого сделайте следующее:

 pause >nul 

4

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

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

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

1

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

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

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

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

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

0

Если вы используете Maven и хотите пропустить ввод и предотвратить закрытие консоли, чтобы увидеть результат, вам нужно использовать команду CALL в сценарии, помимо просто «mvn clean install».

Так закроется консоль

 ECHO Это неправильный пример mvn чистая установка Пауза 

Таким образом консоль останется открытой

 ЭХО Это правильный пример ЗВОНИТЕ mvn чистая установка Пауза 

Если вы не используете 9Команда 0027 CALL ни один из прошлых примеров не будет работать. Потому что по какой-то причине поведение cmd по умолчанию при вызове другого пакетного файла (который в данном случае является mvn) заключается в том, чтобы по существу заменить им текущий процесс, в отличие от вызова . exe

5

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

 запустить "название" вызов abcd.exe param1 param2 запустить «название» вызов xyz.exe param1 param2 

1

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

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

3

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

 @echo off cmd /k foo.bat 

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

1

Вызов cmd в конце командного файла.

0

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

 cmd /c node_modules\.bin\tsc cmd /c узел rollup_build.js Пауза 

помимо пауза .

 комплект /p= Можно использовать 

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

или

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

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

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

 set /p exitkey= "Нажмите любую клавишу, чтобы продолжить..." 

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

Я знаю, что опаздываю, но предпочитаю:

 :конец программы пауза > ноль GOTO программаконец 

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

1

Вариант 1: Просто создайте 2 .bat файла и пропишите в первый:

 start  // имя 2-го батника выход 

Пакетный файл 2 — это файл, который не закрывается в конце. Итак, теперь, когда вы открываете пакет № 1, он запускает второй и закрывается сам. Когда 2-й закончит, он не закроется полностью (пока вы не поставите выход в конце)

Вариант 2: Пакетный файл 1:

 вызов <имя файла> клс эхо Конец файла Пауза <любой код, который вы хотите> 

Когда 2-й файл заканчивается, он снова переходит к файлу 1 и выводит его остальную часть. При этом вы даже можете создавать обработчики ошибок. Если номер 1 дает сбой, он переходит в номер 2 и отображает его

. 0

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

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

пауза

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

команда

 пауза 

или

 эхо-текст для отображения пауза > ноль 

Легко, добавьте 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 УСТАНОВИТЬ JAVA_HOME = C:\Program Files\Java\jdk1.6.0_45 %windir%\system32\cmd.exe 

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

Запустите файл .exe, а затем приостановите выполнение команды

Пример пакетного сценария:

 @echo off myProgram.exe ПАУЗА 

Пример пакетного сценария с аргументами:

 @echo off myProgram.exe аргументПример1 аргументПример2 ПАУЗА 

Я добавил @echo off , потому что не хочу показывать C:\user\Desktop>myProgram.exe и C:\user\Desktop>PAUSE в cmd

cmd /k компакт-диск C:\Projects.....

Если вы хотите, чтобы ваш cmd открывался в определенном длинном месте

добавить паузу (если вы не хотите, чтобы отображалось что-то еще добавить) >nul
это должно выглядеть так:

@echo off
title nice
echo hello
pause >nul

все, что вы увидите, это "hello "

Я лично поставил pause >nul и он ждет нажатия клавиши, не показывая никакого лишнего текста в консоли.

с помощью: call yourbatch.cmd

выполняет эту работу обработает скрипт, а затем продолжит выполнение другого кода в том же окне (экземпляр cmd)

Оставить CMD открытым после выполнения BAT-файла

спросил

Изменено 8 месяцев назад

Просмотрено 465 тысяч раз

У меня есть такой bat-файл:

 ipconfig 

Это распечатает информацию об IP на экране, но прежде чем пользователь сможет прочитать эту информацию, CMD закроется.

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

Как оставить CMD открытым после завершения сценария?

  • файл
  • пакетный файл
  • cmd

5

Поместите паузу в конец файла . BAT.

1

В зависимости от того, как вы запускаете команду, вы можете поставить /k после cmd чтобы окно оставалось открытым.

 cmd /k my_script.bat 

Простое добавление cmd /k в конец командного файла тоже сработает. Спасибо Луиджи Д'Амико, который написал об этом в комментариях ниже.

4

Просто добавьте @pause в конце.

Пример:

 @echo off ipconfig @Пауза 

Или вы также можете использовать:

 cmd /k ipconfig 

5

При запуске файла .bat не из командной строки (например, двойным щелчком мыши).

 echo Отраженный текст @Пауза 

 echo Отраженный текст Пауза 

 echo Отраженный текст cmd/к 

 echo Повторяющийся текст и пауза 

Добавление паузы в (Windows 7) в конец у меня не сработало
но добавление cmd /k перед моей командой сработало.

Пример:

 cmd /k gradlew cleanEclipse 

start cmd /k сделал для меня волшебство. На самом деле я использовал его для подготовки приложения телефонной связи Cordova, оно запускает команду, показывает результат и ждет, пока пользователь закроет его. Ниже приведен простой пример

 start cmd /k echo Hello, World! 

Что я использовал в моем случае

 start cmd /k cordova prepare 

Обновление

У вас даже может быть название для этого, используя

start "My Title" echo Hello, World!

Если вы запускаете сценарий из командной строки, добавьте exit /b , чтобы CMD оставался открытым

1

В Windows добавьте «& Pause» в конец команды в файле.

Я также был озадачен тем, почему мы добавляем cmd в начале, и мне было интересно, нужно ли мне сначала открывать командную строку. Что вам нужно сделать, это ввести полную команду вместе с cmd /k . Например, предположим, что имя вашего пакетного файла — «my_command.bat», который запускает команду javac my_code.java , тогда код в вашем пакетном файле должен быть:

 cmd /k javac my_code.java 

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

 javac -d C:\xxx\lib\ -путь к классам C:\xxx\lib\ *.java cmd cd C:\xxx\yourbat.bat 

вторая команда не закрывает окно cmd. Важно то, что вы по-прежнему можете вводить новую команду

. Кстати, это также работает при запуске команды непосредственно из панели поиска в Windows.

напр. прямой запуск ipconfig напрямую закроет окно cmd после выхода из команды.

Использование cmd \k не будет - это то, что я пытался сделать, когда нашел этот ответ.


Learn more

Только новые статьи

Введите свой e-mail

Видео-курс

Blender для новичков

Ваше имя:Ваш E-Mail: