Как остановить закрытие файла bat

Обновлено: 21.11.2024

Командная строка после запуска закрывается только тогда, когда пользователь вводит команду выхода или нажимает кнопку закрытия окна. Но бывает и так, что командная строка закрывается сама. Это происходит без отображения результатов выполненного скрипта. Такое поведение консоли можно заметить при выполнении файлов сценариев, таких как файлы CMD и BAT.

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

Ну, изменить поведение командной строки очень просто. Самый простой способ — добавить команду паузы или специальный аргумент в конец пакетного файла, который запускает новый экземпляр командной строки.

Откройте пакетный файл в Блокноте или любом другом текстовом редакторе и введите одну из следующих команд в конец файла:

Сохраните файл. Это два разных метода, и они работают по-разному.

Команда паузы

Команда паузы прерывает выполнение скрипта и отображает сообщение «Нажмите любую клавишу для продолжения…». Если команда добавлена ​​в конец скрипта, нажатие любой клавиши закроет консоль, но если пауза будет в середине кода, то после нажатия любой клавиши выполнение скрипта продолжится до следующих строк.

Команда /k

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

Если вы добавите cmd /k в середине пакетного файла, его выполнение будет прервано и прекращено.

В этом ключевое различие между этими командами.

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

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

  • Откройте редактор реестра с помощью команды regedit.
  • Разверните ветку HKCR\batfile\shell\open\command.
  • Измените безымянное значение по умолчанию справа с "%1" %* на cmd.exe /k "%1" %* .
  • Теперь сделайте то же самое под ключом HKCR\cmdfile\shell\open\command.

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

Похоже, вы дочитали пост до конца. Если вам понравилось, пожалуйста, поделитесь им. Вы очень поможете нашему блогу расти!

Автор: команда MFTNEXT

Проект MSFTNEXT – это небольшая команда авторов, которым нравится работать с новейшими технологиями и гаджетами. Будучи увлеченными Windows-блогерами, мы будем рады помочь другим решить их системные проблемы. Просмотреть все сообщения команды MFTNEXT

Оставить ответ Отменить ответ

сообщить об этом объявлении

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

Эту проблему можно решить, выполнив любую из приведенных ниже рекомендаций.

К сожалению, в Windows нет настройки для отключения автоматического закрытия окон MS-DOS.

Открыть окно MS-DOS

Если вы запускаете команду или программу MS-DOS в Windows, попробуйте открыть командную строку MS-DOS и выполнить команду или программу из MS-DOS.

Изменить путь к команде в ярлыке

Пользователи Microsoft Windows 2000 и Windows XP могут выполнить команду через CMD.EXE с параметром /K. При этом открывается командное окно, а затем выполняется команда или программа. После выполнения команды или программы компьютер остается в командной строке. Для этого выполните следующие действия.

  1. Создайте ярлык для программы или команды MS-DOS.
    1. После создания ярлыка щелкните его правой кнопкой мыши и выберите "Свойства".
    2. В окне "Свойства" измените целевое расположение, чтобы оно содержало команду CMD.EXE с параметром /K, как показано в примере ниже.

    До

    После

    • Дополнительную информацию об этой команде см. на странице команды CMD.

    Добавить оператор паузы в пакетный файл

    Наконец, важно понимать, что окно не закроется, если Microsoft Windows считает, что программа все еще работает. Если вы создаете пакетный файл и хотите, чтобы окно MS-DOS оставалось открытым, добавьте PAUSE в конец вашего пакетного файла. Это предлагает пользователю Нажать любую клавишу. Пока пользователь не нажмет любую клавишу, окно остается открытым, а не закрывается автоматически.

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

    Было бы хорошо, если бы был способ определить, был ли файл .cmd запущен двойным щелчком в проводнике (тогда вы хотите, чтобы он приостановился в конце) или он был запущен уже открытой командной строкой. В последнем случае (и особенно если выполняется другой программой) вам не нужна пауза. Я не нашел хорошего решения для этого случая (и обычно использую переменную if %NOPAUSE%, но это работает только для родительских программ, а не для оболочек paremt).

    18 ответов 18

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

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

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

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

    Да, это не всегда работает в зависимости от среды. Для более надежного решения см. Мой ответ ниже. По сути, просто выполните set /p exitkey= "Нажмите любую клавишу, чтобы продолжить."

    Будьте осторожны, если кто-то запустит ваш скрипт без окна консоли (например, через vbscript), то он будет зависать, пока вы не уничтожите его через Диспетчер задач.

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

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

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

    Если вы запускаете команды Windows через диалоговое окно «Выполнить», вместо этого поместите cmd /k перед вашей командой. & cmd /k не будет работать.

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

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

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

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

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

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

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

    В таком случае консоль останется открытой

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

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

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

    Оглавление

    Ниже приведены три способа предотвратить закрытие окна командной строки после выполнения команд. Выберите наиболее подходящий для вас вариант.

    Откройте пакетный файл в Блокноте, щелкнув его правой кнопкой мыши и выбрав «Изменить» в списке.

    Затем вставьте следующую команду в конец пакетного файла

    Далее сохраните файл, нажав «Ctrl+S», и закройте блокнот. Дважды щелкните файл .bat. Вы увидите, что CMD останется открытым, пока вы этого хотите.

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

    Второй способ, который я вам покажу, тоже простой.

    Отредактируйте файл bat, щелкнув его правой кнопкой мыши и выбрав «Редактировать» из списка. Ваш файл откроется в блокноте.

    Теперь добавьте слово «ПАУЗА» в конец файла bat. Окно командной строки будет оставаться открытым до тех пор, пока вы не нажмете ни одну клавишу.

    Вы можете легко увидеть каждую команду, которая была запущена в результате bat-файла в CMD, пока вы не нажимаете никакую клавишу.

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

    Дважды щелкните сохраненный файл после его сохранения. Windows сохранит значения реестра в реестре. Запустите любую команду или пакетный сценарий в CMD сейчас, и окно командной строки останется открытым, пока вы его не закроете.

    Все это быстрые и простые способы оставить окно командной строки открытым, чтобы вы могли настраивать и отслеживать каждую команду, выполняемую с помощью пакетного файла или сценария Powershell. Если у вас есть другие вопросы, пожалуйста, прокомментируйте ниже. Большое спасибо.

    Когда мы запускаем пакетный файл, командная строка открывается и автоматически закрывается после обработки пакетного файла. Иногда команда выполняется так быстро, что кажется, что командная строка закрывается сразу после открытия пакетного (BAT) файла. Это не позволяет пользователям выполнять другие задачи после выполнения пакетного файла или просмотра состояния команд, которые они выполнили в CMD. Если вы хотите, чтобы окно командной строки оставалось открытым после обработки пакетного файла, этот пост может вам помочь.

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

    1. С помощью команды "Пауза".
    2. С помощью команды cmd /k.
    3. Путем редактирования разделов реестра.

    Давайте рассмотрим эти методы один за другим.

    1] Предотвратите немедленное закрытие командной строки с помощью команды «Пауза»

    Команда Pause предотвращает закрытие командной строки после обработки пакетного файла.

    1. Щелкните правой кнопкой мыши пакетный файл и выберите «Редактировать». Откроется Блокнот.
    2. Введите Pause в конце команды, которую вы ввели в пакетном файле.
    3. Сохраните файл.

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

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

    2] Предотвратите закрытие командной строки с помощью команды cmd /k

    Команда cmd /k позволяет выполнять новые команды после обработки пакетного файла, не закрывая командную строку. Щелкните правой кнопкой мыши пакетный файл и введите cmd /k в конце пакетного файла. После этого сохраните его.

    3] Редактирование ключа реестра, чтобы предотвратить закрытие командной строки

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

    Вы можете пропустить редактирование пакетных файлов, изменив разделы реестра. Мы объяснили процедуру ниже. Прежде чем продолжить, мы рекомендуем создать резервную копию реестра.

    1] Запустите окно команды «Выполнить». Введите regedit и нажмите ОК. Нажмите «Да», если появится запрос UAC.

    2] В редакторе реестра перейдите по следующим путям:

    Вы найдете значение «(по умолчанию)» справа. Дважды щелкните это значение и измените его значение на cmd.exe /k "%1" %* . Нажмите OK, чтобы сохранить внесенные изменения. Когда закончите, закройте редактор реестра.

    1. Запустить сканирование SFC.
    2. Устранение неполадок в состоянии чистой загрузки.
    3. Перезагрузите компьютер.

    1] Запустить сканирование SFC

    Проверка системных файлов (SFC) — это утилита от Microsoft, которая сканирует системные файлы на наличие ошибок или повреждений и восстанавливает поврежденные файлы. Проблема, с которой вы столкнулись, может быть связана с повреждением системных файлов. Следовательно, запуск сканирования SFC может решить проблему.

    2] Устранение неполадок в состоянии чистой загрузки

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

    3] Перезагрузите компьютер

    Если вам ничего не помогает исправить ошибку, рассмотрите возможность перезагрузки компьютера.

    Надеюсь, это поможет.

    Как запустить EXE-файл из командной строки?

    Чтобы запустить EXE-файл из командной строки, выполните следующие действия:

    1] Запустите командную строку.

    2] Введите cd «путь к файлу» без кавычек и нажмите Enter. Путь к файлу — это место установки EXE-файла. Чтобы узнать расположение файла, щелкните правой кнопкой мыши значок ярлыка программы, которую вы хотите открыть с помощью CMD, и выберите «Открыть расположение файла». Теперь щелкните адресную строку проводника и скопируйте весь путь. Вы можете вставить весь этот путь прямо в командную строку, используя клавиши Ctrl + V.

    3] Теперь введите start "filename.exe" без кавычек и нажмите Enter.

    Это запустит EXE-файл.

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

    Вы можете использовать команды Pause или cmd /k, чтобы окно команд оставалось открытым в пакетном файле. Если вы хотите, вы также можете сделать это действие постоянным, изменив некоторые ключи в реестре. Мы объяснили все эти три метода выше в этой статье.

    Дата: 28 сентября 2021 г. Метки: CMD

    Похожие записи

    Как включить CTRL+C и CTRL+V в командной строке в Windows 11/10

    Параметры завершения работы командной строки для файла shutdown.exe в Windows 11/10

    Отключить прокрутку вперед в командной строке и PowerShell в Windows 10

    [электронная почта защищена]

    Читайте также: