Cmd чтобы не закрывалось окно

Обновлено: 24.04.2024

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

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

ОТВЕТЫ

Ответ 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

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

Cmd чтобы не закрывалось окно

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

Pause если добавить, то в окошке будет "Press any key to continue . . .", после нажатия эни кея, оно закроется. а мне надо чтоб дальше ручками в нём печатать.

ps1 Это повершелловский файл.

Цитата Ingolder:
после нажатия эни кея, оно закроется. а мне надо чтоб дальше ручками в нём печатать »
поставить в конце скрипта:
Конфигурация компьютера
Процессор: Intel Pentium 4 2,8 MHz
Материнская плата: ASRock P4i65PE (5 PCI, 1 AGP, 4 DDR DIMM, Audio, LAN)
Память: 4 ГБ (PC3200 DDR SDRAM)
HDD: ST3200827A (200 ГБ) IDE
Видеокарта: NVIDIA GeForce 6200 (512 МБ)
Звук: Creative SB Live! 5.1 Digital (SB0220) Sound Card
Блок питания: Powerman 350 Вт
CD/DVD: NEC DVD_RW ND-3551A
Монитор: Dell 2314PH
Ноутбук/нетбук: Стационарный компьютер
ОС: Windows 7 x32 Professional

Подскажите, пожалуйста: есть cmd-файл, состоящий из одной строки: avz.exe lang=en. Когда я его запускаю, на экране появляются и висят, пока не закрою, окно DOS и окно AVZ.

А если я запускаю avz.exe lang=en в командной строке Total Commander или через контекстное меню "Запуск с параметрами" от DistrTools - окно DOS на экране не показывается.

Почему такая разница?

Конфигурация компьютера
Процессор: Intel Core i7-3770K
Материнская плата: ASUS P8Z77-V LE PLUS
Память: Crucial Ballistix Tactical Tracer DDR3-1600 16 Гб (2 x 8 Гб)
HDD: Samsung SSD 850 PRO 256 Гб, WD Green WD20EZRX 2 Тб
Видеокарта: ASUS ROG-STRIX-GTX1080-O8G-11GBPS
Звук: Realtek ALC889 HD Audio
Блок питания: be quiet! Straight Power 11 650W
CD/DVD: ASUS DRW-24B5ST
Монитор: ASUS VG248QE 24"
ОС: Windows 8.1 Pro x64
Индекс производительности Windows: 8,1
Прочее: корпус: Fractal Design Define R4
Цитата truvo:
Когда я его запускаю, на экране появляются и висят, пока не закрою, окно DOS и окно AVZ.

Это не окно DOS, а командная строка (cmd.exe выполняет файлы с расширением .cmd).

Цитата truvo:
в командной строке Total Commander
А это не командная строка (без участия cmd.exe). Цитата truvo:
Подскажите, пожалуйста: есть cmd-файл, состоящий из одной строки: avz.exe lang=en. Когда я его запускаю, на экране появляются и висят, пока не закрою, окно DOS и окно AVZ. »
В строчке перед avz.exe lang=en допишите Start

-------
Как сказало Дерево Дровосеку: "я - пень".

Цитата truvo:
Когда я его запускаю, на экране появляются и висят, пока не закрою, окно DOS и окно AVZ »
Используйте команду START, help start - для описания:

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

START ["заголовок"] [/Dпуть] [/i] [/MIN] [/MAX] [/SEPARATE | /SHARED]
[/LOW | /NORMAL | /HIGH | /REALTIME| /ABOVENORMAL | /BELOWNORMAL]
[/WAIT] [/b]
[команда/программа] [параметры]

"заголовок" Заголовок окна.
путь Рабочий каталог.
B Запуск приложения без создания нового окна с отключением
обработки сочетания клавиш ^C. Если приложение не
обрабатывает сочетание клавиш ^C самостоятельно,
единственным способом его прерывания является
использование сочетания клавиш ^Break.
I Новой средой станет исходная среда, переданная
cmd.exe, а не текущая среда.
MIN Запуск команды/программы в свернутом окне.
MAX Запуск команды/программы в развернутом окне.
SEPARATE Запуск 16-разрядной программы Windows в отдельной
области памяти.
SHARED Запуск 16-разрядной программы Windows в общей
области памяти.
LOW Запуск приложения с приоритетом IDLE.
NORMAL Запуск приложения с приоритетом NORMAL.
HIGH Запуск приложения с приоритетом HIGH.
REALTIME Запуск приложения с приоритетом REALTIME.
WAIT Запуск приложения с ожиданием его завершения.
ABOVENORMAL Запуск приложения с классом приоритета ABOVENORMAL
BELOWNORMAL Запуск приложения с классом приоритета BELOWNORMAL
команда/программа
Если это внутренняя команда cmd.exe или пакетный файл,
обработчик команд (cmd.exe) запускается с ключом /K.
Это означает, что окно не будет закрыто после завершения
команды.

Если это не внутренняя команда cmd.exe и не пакетный файл,
значит, это программа, которая будет запущена в графическом
или текстовом окне.

параметры Параметры, передаваемые команде/программе.


Изменения вызова внешних команд из командной строки или с помощью команды
START при включении расширенной обработки команд:

Для вызова неисполняемых файлов через механизм сопоставления типов файлов
достаточно просто ввести имя файла в командной строке. Например, команда
WORD.DOC запускает приложение, сопоставленное расширению имени файла .DOC.
Сведения о создании подобных сопоставлений из пакетных файлов приведены
в описаниях команд ASSOC и FTYPE.

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

При выполнении командной строки, первым элементом которой является текстовая
строка "CMD" без расширения имени файла или указания пути, она заменяется
значением переменной COMSPEC. Это предотвращает запуск CMD.EXE из
текущей активной папки, если таковая программа там имеется.

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

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

Если при поиске исполняемого файла нет соответствия ни одному из расширений,
выполняется проверка соответствия указанного имени папки. Если имя папки
соответствует указанному, то команда START запускает EXPLORER для этого
пути. Если такое действие выполняется из командной строки, то оно
эквивалентно выполнению команды CD /D для указанного пути.

Cmd чтобы не закрывалось окно

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

Pause если добавить, то в окошке будет "Press any key to continue . . .", после нажатия эни кея, оно закроется. а мне надо чтоб дальше ручками в нём печатать.

ps1 Это повершелловский файл.

Цитата Ingolder:
после нажатия эни кея, оно закроется. а мне надо чтоб дальше ручками в нём печатать »
поставить в конце скрипта:
Конфигурация компьютера
Процессор: Intel Pentium 4 2,8 MHz
Материнская плата: ASRock P4i65PE (5 PCI, 1 AGP, 4 DDR DIMM, Audio, LAN)
Память: 4 ГБ (PC3200 DDR SDRAM)
HDD: ST3200827A (200 ГБ) IDE
Видеокарта: NVIDIA GeForce 6200 (512 МБ)
Звук: Creative SB Live! 5.1 Digital (SB0220) Sound Card
Блок питания: Powerman 350 Вт
CD/DVD: NEC DVD_RW ND-3551A
Монитор: Dell 2314PH
Ноутбук/нетбук: Стационарный компьютер
ОС: Windows 7 x32 Professional

Подскажите, пожалуйста: есть cmd-файл, состоящий из одной строки: avz.exe lang=en. Когда я его запускаю, на экране появляются и висят, пока не закрою, окно DOS и окно AVZ.

А если я запускаю avz.exe lang=en в командной строке Total Commander или через контекстное меню "Запуск с параметрами" от DistrTools - окно DOS на экране не показывается.

Почему такая разница?

Конфигурация компьютера
Процессор: Intel Core i7-3770K
Материнская плата: ASUS P8Z77-V LE PLUS
Память: Crucial Ballistix Tactical Tracer DDR3-1600 16 Гб (2 x 8 Гб)
HDD: Samsung SSD 850 PRO 256 Гб, WD Green WD20EZRX 2 Тб
Видеокарта: ASUS ROG-STRIX-GTX1080-O8G-11GBPS
Звук: Realtek ALC889 HD Audio
Блок питания: be quiet! Straight Power 11 650W
CD/DVD: ASUS DRW-24B5ST
Монитор: ASUS VG248QE 24"
ОС: Windows 8.1 Pro x64
Индекс производительности Windows: 8,1
Прочее: корпус: Fractal Design Define R4
Цитата truvo:
Когда я его запускаю, на экране появляются и висят, пока не закрою, окно DOS и окно AVZ.

Это не окно DOS, а командная строка (cmd.exe выполняет файлы с расширением .cmd).

Цитата truvo:
в командной строке Total Commander
А это не командная строка (без участия cmd.exe). Цитата truvo:
Подскажите, пожалуйста: есть cmd-файл, состоящий из одной строки: avz.exe lang=en. Когда я его запускаю, на экране появляются и висят, пока не закрою, окно DOS и окно AVZ. »
В строчке перед avz.exe lang=en допишите Start

-------
Как сказало Дерево Дровосеку: "я - пень".

Цитата truvo:
Когда я его запускаю, на экране появляются и висят, пока не закрою, окно DOS и окно AVZ »
Используйте команду START, help start - для описания:

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

START ["заголовок"] [/Dпуть] [/i] [/MIN] [/MAX] [/SEPARATE | /SHARED]
[/LOW | /NORMAL | /HIGH | /REALTIME| /ABOVENORMAL | /BELOWNORMAL]
[/WAIT] [/b]
[команда/программа] [параметры]

"заголовок" Заголовок окна.
путь Рабочий каталог.
B Запуск приложения без создания нового окна с отключением
обработки сочетания клавиш ^C. Если приложение не
обрабатывает сочетание клавиш ^C самостоятельно,
единственным способом его прерывания является
использование сочетания клавиш ^Break.
I Новой средой станет исходная среда, переданная
cmd.exe, а не текущая среда.
MIN Запуск команды/программы в свернутом окне.
MAX Запуск команды/программы в развернутом окне.
SEPARATE Запуск 16-разрядной программы Windows в отдельной
области памяти.
SHARED Запуск 16-разрядной программы Windows в общей
области памяти.
LOW Запуск приложения с приоритетом IDLE.
NORMAL Запуск приложения с приоритетом NORMAL.
HIGH Запуск приложения с приоритетом HIGH.
REALTIME Запуск приложения с приоритетом REALTIME.
WAIT Запуск приложения с ожиданием его завершения.
ABOVENORMAL Запуск приложения с классом приоритета ABOVENORMAL
BELOWNORMAL Запуск приложения с классом приоритета BELOWNORMAL
команда/программа
Если это внутренняя команда cmd.exe или пакетный файл,
обработчик команд (cmd.exe) запускается с ключом /K.
Это означает, что окно не будет закрыто после завершения
команды.

Если это не внутренняя команда cmd.exe и не пакетный файл,
значит, это программа, которая будет запущена в графическом
или текстовом окне.

параметры Параметры, передаваемые команде/программе.


Изменения вызова внешних команд из командной строки или с помощью команды
START при включении расширенной обработки команд:

Для вызова неисполняемых файлов через механизм сопоставления типов файлов
достаточно просто ввести имя файла в командной строке. Например, команда
WORD.DOC запускает приложение, сопоставленное расширению имени файла .DOC.
Сведения о создании подобных сопоставлений из пакетных файлов приведены
в описаниях команд ASSOC и FTYPE.

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

При выполнении командной строки, первым элементом которой является текстовая
строка "CMD" без расширения имени файла или указания пути, она заменяется
значением переменной COMSPEC. Это предотвращает запуск CMD.EXE из
текущей активной папки, если таковая программа там имеется.

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

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

Если при поиске исполняемого файла нет соответствия ни одному из расширений,
выполняется проверка соответствия указанного имени папки. Если имя папки
соответствует указанному, то команда START запускает EXPLORER для этого
пути. Если такое действие выполняется из командной строки, то оно
эквивалентно выполнению команды CD /D для указанного пути.

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

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

  1. Поместите строку pause после пакетных программ, чтобы предложить пользователю нажать клавишу перед выходом
  2. Запуск этих командных файлов или других инструментов управления командной строкой (даже запуск службы, перезапуск и т. д. с помощью net start xy или что-то подобное) в пределах cmd.exe (Start - Run - cmd.exe)
  3. Запуск этих программ с помощью cmd /k следующим образом: cmd /k myprogram.bat

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

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

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

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

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

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

49 голосов | спросил Sk8erPeter 4 июля 2011, 19:32:05

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

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

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

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

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

ответил 4 июля 2011, 22:05:25

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

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

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

ответил grawity 4 июля 2011, 21:45:20

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

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

ответил Lee Harrison 21 марта 2013, 18:10:13

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

Чтобы использовать это по умолчанию для всех пакетных файлов, установите HKEY_CLASSES_ROOT\cmdfile\shell\open\command\(default) и HKEY_CLASSES_ROOT\batfile\shell\open\command\(default) до "%windir%\system32\cmd.exe" /k "%windir%\system32\cmd" /c "%1" %* .

ответил Wernight 6 ноября 2012, 17:37:01

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

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

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

ответил kitsu.eb 26 апреля 2014, 20:55:23

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

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

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

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

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

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

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

ответил Kevin Fegan 22 марта 2013, 00:02:36

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

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

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

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

ответил agradl 12 марта 2013, 19:30:15

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

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

ответил VumC 24 сентября 2013, 16:30:12

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

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

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

ответил Francois 11 декабря 2015, 20:02:56

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

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

ответил jaycode 30 марта 2017, 11:30:11

В ответ на пониженную PSIXO - «Этот ответ уже был рассмотрен в вопросе. - Ro Yo Mi Jan 20 '16 at 5:06" -- Нет, не было. Предыдущие ответы были: «пауза», которая НЕ работала. Ответ PSIXO был: «& pause», который работает. Пожалуйста, проанализируйте более тщательно перед понижением. Я запускал это из приглашения IDLE, и он работал:

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

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

Как избежать закрытия командной строки при нажатии на Enter?

1160667c438e42efbe2c8a9b30faddc5.jpg


После нажатия на Enter командная строка просто исчезает. Посоветуйте, что можно сделать, чтобы избежать данной проблемы?
  • Вопрос задан более трёх лет назад
  • 7482 просмотра
Решения вопроса 1 Живу в своё удовольствие

UPD:
Ребят, вы что? Какой цикл? Какое шаманство с cmd?
У парня скрипт в 2 строки

Зачем вы парня пугаете так?

Ответ написан более трёх лет назад

Jump

Просто парень сказал что проблема в CMD, ему про нее и толкуют, я уж тоже хотел овтетить что pause надо дописать, но присмотрелся и у увидел что это интерпретатор пайтона. Ответы на вопрос 3 Saboteur @saboteur_kiev Куратор тега Python software engineer

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

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

Поэтому выход - сперва запустите консоль (cmd.exe), а из нее уже запускайте консольные программы.

Ответ написан более трёх лет назад Stalker_RED @Stalker_RED Можно запускать как-то так cmd /c ping.exe & pause (вместо ping ваша программа) Ответ написан более трёх лет назад Тогда уже лучше cmd /k ping.exe Сверхразум

//код может содержать синтаксические ошибки, я никогда не кодил на python

Как настроить Windows, чтобы окна консольных приложений не закрывались после работы?

Интересует случай, когда приложение запускается не из консоли.
Хотелось бы, чтобы окошко с отработанным приложением висело с активным рабочим cmd (в идеале), ну или просто показывало последний вывод программы (тоже хорошо).
Для .bat-файлов это тоже должно работать, без их редактирования.

Решения вопроса 1

Slayer_nn

Yan @Slayer_nn Куратор тега Windows

Гугол, памаги!

для bat/cmd
в конце строки(в самом низу отдельно) ввести pause Или @pause
типа

5bffcd06c3ec2340039418.jpg


Вот еще решение
Ставишь con emu
Заменяешь в настройках (integration) стандартный cmd
Радуешься

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

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

Если у меня было программное обеспечение, которое выполняет команду с переключателями, в результате чего окно cmd.exe быстро открывалось и закрывалось, как я могу перенастроить командную строку, чтобы она НЕ закрывалась автоматически после завершения задачи.

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

Почему командное окно всегда исчезает сразу в Windows 7?

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

1. Я открываю новую командную строку (windows key + r) + «cmd» 2. Я пытаюсь использовать любую из возможностей, указанных в моем вопросе ниже, в появившемся окне 3. Новое окно ruby ​​открывается, а затем закрывается, и я могу не вижу ничего на выходе

Например, я пытаюсь написать код ruby ​​и запустить rspec . Тем не менее, я пытался

  • rspec
  • cmd /k rspec
  • start /B rspec
  • из меню запуска: cmd rspec (rspec даже не запускается)

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

Есть ли какие-то настройки, которые мне здесь не хватает?

В качестве обходного пути я могу запустить, irb а затем использовать метод обратной галочки, как так

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

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

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

  1. Поставить pause строку после пакетных программ, чтобы предложить пользователю нажать клавишу перед выходом
  2. Запуск этих командных файлов или других инструментов для работы с командной строкой (даже запуск службы, перезапуск и т. Д. С помощью net start xy чего-либо подобного) в cmd.exe (Пуск - Выполнить - cmd.exe)
  3. Запуск этих программ с помощью cmd /k этого: cmd /k myprogram.bat

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

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

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

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

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

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

Ваш вопрос со всеми объяснениями заставил мою голову взорваться. Можете ли вы сказать что-то вроде: я хочу запустить командный файл с помощью этой команды «примера», и я хочу, чтобы окно команды оставалось открытым после завершения. Это то, что вы спрашиваете? Пожалуйста, вставьте пример кода. +1 Согласен. Немного подробный, пожалуйста, пересмотрите свой вопрос и, если возможно, используйте пример и составьте более сжатый вопрос. Это нормальное поведение, и, хотя ваш вопрос, безусловно, действителен, вы должны задаться вопросом, почему вам нужно держать командную строку открытой после (большинство утилит создаются с учетом этого предостережения). На мой взгляд, это не настоящий вопрос. Поскольку вы просто указываете пользователю использовать вместо этого пакетный файл. Если это не цель вопроса, пожалуйста, проясните свой вопрос, удалив всю запутанную информацию и объясните, какова ваша реальная цель. Трудно придумать правильный ответ, если неясно . @Randolf Richardson, это потому, что конечные пользователи никогда не должны видеть эти инструменты (в конце концов, именно поэтому мы сейчас используем GUI). Если вам нужна такая информация, большинство ИТ-групп будут отправлять командные файлы, чтобы собрать необходимую системную информацию и отобразить ее. Я не вижу никакого возможного способа, чтобы, если будет найдено решение этого вопроса, оно вызовет меньше проблем, чем решит - так много вещей отправляются stdout на постоянной основе, которые никогда не были видны по уважительной причине.

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

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

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

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

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

+1 за единственное решение, которое действительно отвечает на поставленный вопрос. К сожалению, я думаю, что это может быть утечка памяти, ожидающая, чтобы случиться. Что происходит, когда служба запускает новый пакетный файл без указания CMD.EXE в строке CMD? Не будет ли этот код использоваться в этом случае? Разве это не создаст новое окно на неинтерактивном рабочем столе и оставит его открытым до перезагрузки? @APerson Ваше изменение нарушило команду, не включая * . Пожалуйста, будьте осторожнее при редактировании! @ not2qubit Извините, не заметил, что я удалил три звездочки вместо двух. Сделаю.

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

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

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

+1 за понимание того, как и почему закрываются окна консоли (в отличие от большинства, которые просто говорят: «Боже мой, почему он не остается открытым . 1111one»). Он ведет себя так, как задумано, и он должен оставаться таким, ИМХО. Это основная причина, по которой у нас есть стандартные потоки и командные файлы. @ Прорыв Вопрос в том How can I do X , нет In your opinion, should I do X . Этот ответ бесполезен, он подразумевает, что X невозможно, когда частичные решения уже были представлены в другом месте. (-1)

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

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

Я не знал о Shift + правый клик. Также, однако, вы можете перетащить исполняемый файл в окно cmd, которое автоматически указывает путь для вас. Это обычно работает для меня, но это, очевидно, не совсем так, потому что я здесь ищу решение именно потому, что оно не работает в моей текущей ситуации. это самое простое решение и должно быть помечено как правильный ответ

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

Чтобы использовать эту функцию по умолчанию для всех пакетных файлов, набор HKEY_CLASSES_ROOT\cmdfile\shell\open\command\(default) и HKEY_CLASSES_ROOT\batfile\shell\open\command\(default) к "%windir%\system32\cmd.exe" /k "%windir%\system32\cmd" /c "%1" %* .

Я думал, что это "%*" передает полный список параметров, поэтому не будет ли это передать первый параметр дважды, один раз "%1" и снова, как первый параметр "%*" ? @KevinFegan Я не проверил причину, но% 1 должен сохранять кавычки, что означает, что в некоторых случаях он может быть заключен в двойные кавычки. Существует также разница между %1 %2 %3 .. и %* которую я не помню сейчас , кроме %1 %2 %3 работ , в некоторых случаях , когда %* не удается.

Я только что наткнулся на глупое решение после прочтения grawity ответа.

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

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

Вместо использования PAUSE (я предпочитаю, чтобы CHOICE или TIMEOUT использовали PAUSE, когда это необходимо), вы можете использовать решение здесь: 886848 / how-to-make-windows-batch-file-pause-when-double-click .

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

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

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

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

Итак, вы используете это так:

В тот момент, когда пакетный файл будет завершен, вы добавите некоторый код, подобный этому:

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