Как сделать чтобы bat файл не закрывался

Обновлено: 07.07.2024

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

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

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

Обычно pause выполняет задание в файле .bat.

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

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

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

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

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

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

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

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

Как это закроет консоль

Так консоль будет оставаться открытой

Если вы не используете команду CALL , ни один из примеров вставки не будет работать.

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

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

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

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

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

Возможность 1: Просто создайте 2 файла .bat и напишите в первую:

Возможность 2: Пакетный файл 1:

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

Monday, March 7, 2016

Предотвращение закрытия окна коммандной строки после выполнения bat файла

Другой вариант: у командной строки есть ключ /K. Он позволяет запустить батник, и после этого просто не закрывать окно коммандной строки. Например,
cmd /K test.bat

Для удобства можно сделать ярлык, в котором прописать путь к батнику и /K.
Надеюсь поможет кому-нибудь 🙂

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

Но есть и другие случаи, в которых пользователь:

  1. Запускает программу в первый раз и не знает, что данная программа будет запущена в командной строке (Windows Command Processor), например. при запуске ярлыка из меню «Пуск» (или из другого места), OR
  2. Найти немного неудобно для запуска cmd.exe все время и не имеет времени /возможности переписать код этих команд всюду, чтобы поставить паузу после них или избежать выхода в явном виде.

Я прочитал статью об изменении поведения по умолчанию cmd.exe при открытии его явно, с созданием Запись AutoRun и управление его содержимым в этих местах:

(Элементы автозапуска _String values_ . )

Я поместил cmd /d /k в качестве значения, чтобы попробовать, но это не изменило поведение упомянутых материалов выше всего . Он просто изменил поведение окна командной строки при открытии его явно (Start-Run-cmd.exe).

Итак, как это работает? Можете ли вы дать мне какие-либо идеи для решения этой проблемы?

У меня есть решение, которое может применяться только к .cmd и .bat :

Откройте regedit и перейдите к каждому из них:

Теперь измените значение «Значение по умолчанию» на cmd.exe /k "%1" %* . Теперь каждое окно пакетного скрипта останется открытым после его выполнения.

Обратите внимание, что это похоже на использование cmd.exe /c cmd.exe /k program.bat , что означает, что другой экземпляр CMD будет запущен в родительский. Я не мог найти, как перезаписать первый аргумент /c .

Вы также можете сделать это с помощью [exefile] , но теперь он отобразит пустой консольный блок, если исполняемый файл имеет графический интерфейс.

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

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

(Для 16-разрядных MS-DOS-программ Windows предлагает в диалоговом окне свойств параметр «Закрыть при выходе», но это не является исключением из вышеприведенного поведения: это процесс NTVDM, который закрывает окно. Кроме того, эта опция снова для каждой программы.)

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

1. Перейдите в папку, в которой находится ваш исполняемый файл. 2.Shift-Щелкните правой кнопкой мыши и выберите «Окно команд отсюда»
3.type в имени исполняемого файла и нажмите Enter
4. Процесс должен выполняться, но окно должно оставаться открытым.

cmd.exe /k даст вам проблемы с некоторыми партиями. Если пакет exit 1 (без /B ) ваша консоль будет закрыта. Трюк заключается в том, чтобы использовать:

Чтобы использовать это по умолчанию для всех пакетных файлов, установите HKEY_CLASSES_ROOTcmdfileshellopencommand(default) и HKEY_CLASSES_ROOTatfileshellopencommand(default) до "%windir%system32cmd.exe" /k "%windir%system32cmd" /c "%1" %* .

Я просто нажал на немое решение после прочтения ответа grawity .

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

Вместо использования PAUSE (я предпочитаю CHOICE или TIMEOUT использовать PAUSE при необходимости), вы можете использовать это решение здесь: 886848 /как в изготовление витрины-пакетный файл пауза-когда-двойной щелчок .

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

Связанное решение позволит вам решить, хотите ли вы пропустить паузы, если пакетный файл был запущен из окна командной строки.

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

, чтобы определить, был ли командный файл запущен из окна команд или нет.

Итак, вы используете его следующим образом:

В момент выхода командного файла вы добавите следующий код:

, поэтому, если вы обычно запускаете файл с именем go.bat, тогда вы создадите второй командный файл с именем go2.bat

содержимое go2.bat будет просто

первое окно немедленно закрывается, но тот, который запускает ваш go.bat, остается открытым

Это работает для версии 5.00 редактора реестра Windows.

Сохраните указанные выше cmds в файле, который называется что-то вроде cmdbatfile-open.reg и выполните его!

Предположим, у вас есть два командных файла, которые вы хотите запустить в своем собственном экземпляре, и не открывайте их, если их исполняемый файл выйдет. Позволяет называть эти две партии A.bat и B.bat .

Теперь для простоты вы можете запустить пакетный файл для их обоих, назовем это launch_both.bat с содержимым:

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

Для Windows 10, если у вас есть доступ к скрипту, вам нужно добавить следующий код в конце:

Этот код будет ждать ввода перед закрытием.

С другой стороны:

НЕ работал (запрос cmd перевернулся, и на самом деле вернул ошибку (1)). Спасибо PSIXO за ответ, который мне нужен. Генри.

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

ОТВЕТЫ

Ответ 1

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

Ответ 2

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

Обычно pause выполняет задание в файле .bat.

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

Ответ 3

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

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

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

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

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

Ответ 4

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

Ответ 5

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

Как это закроет консоль

Так консоль будет оставаться открытой

Если вы не используете команду CALL , ни один из примеров вставки не будет работать.

Ответ 6

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

Ответ 7

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

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

Ответ 8

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

Ответ 9

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

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

Ответ 10

Возможность 1: Просто создайте 2 файла .bat и напишите в первую:

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

Возможность 2: Пакетный файл 1:

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

Ответ 11

Я знаю, что опаздываю, но мой любимый способ:

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

Ответ 12

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

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

Ответ 13

Ответ 14

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

Ответ 15

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

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

2), если вы хотите, чтобы приглашение Windows cmd оставалось открытым и позволяло выполнять некоторые последующие команды; использовать

введите описание изображения здесь

Ответ 16

Легко, добавьте cmd в свою последнюю строку летучей мыши, НО! если вы reset или очистите свой системный путь, вы должны запустить свой cmd с полным путем, например:

Например, у меня есть файл bat для reset jdk для старой версии, например:

Ответ 17

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

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

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

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

Команда pause

Главное, чтобы у вас имелись права на редактирование этого самого скрипта.

Отройте скрипт Блокнотом или любым другим текстовым редактором и добавьте в самый конец кода команду pause или cmd /k.

Команда cmd /k

Это два разных способа и работают они по-разному.

CMD

Команда cmd /k работает несколько иначе.

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

Cmd /k

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

В этом основная разница между этими командами.

Тонкая настройка командной строки

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

Для этого открываем командой regedit редактор реестра и разворачиваем ветку:

HKCR\batfile\shell\open\command

В правой колонке меняем значение параметра по умолчанию с "%1" %* на cmd.exe /k "%1" %*.

RegEdit

Тоже самое проделываем с параметром по умолчанию в ветке HKCR\cmdfile\shell\open\command , для командных файлов формата CMD .

RegEdit

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

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

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

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

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

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

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

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

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

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

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

Запуск BAT файла из командной строки

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

Командная строка сама открывается и сразу закрывается

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

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