Пакетные файлы: как оставить окно консоли открытым

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

  • "Мой пакетный файл" > 2. "Some Other Batch File"

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

cmd.exe /k "<SomePath>\<My Batch File>.bat" & pause

Что я хочу сделать Я хочу, чтобы окно консоли было открыто после завершения командного файла. Теперь он просто закрывается, пытается играть вокруг флагов cmd, никакого результата.

Платформа: Windows7


ОБНОВЛЕНИЕ 1

Изменена структура, простой пример вроде этого не работает, Только один пакетный файл, то есть нет 2. "Some Other Batch File" Единственный командный файл содержит smth, подобный этому

start /B /LOW /WAIT make package
cmd /K

ОБНОВЛЕНИЕ 2

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

Любые идеи о том, как открыть окно консоли?

Ответ 1

Если это действительно весь пакетный файл, удалите cmd /K и добавьте PAUSE.

start /B /LOW /WAIT make package
PAUSE

Затем просто укажите свой ярлык на "My Batch File.bat"... нет необходимости запускать его с помощью cmd /K.

UPDATE

А, какая-то новая информация... вы пытаетесь сделать это из закрепленного ярлыка на панели задач.

Я нашел это, Добавление пакетных файлов на панель задач Windows 7, например, Vista Vista/XP Quick Launch, с соответствующей частью ниже.

  • Сначала выделите ярлык для CMD.EXE на панели задач, нажав кнопку "Пуск", затем введите "cmd" в поле поиска, щелкните правой кнопкой мыши результат и выберите "Pin to Taskbar".
  • Щелкните правой кнопкой мыши ярлык на панели задач.
  • Вы увидите список, включающий "Командная строка" и "Отменить эту программу с панели задач".
  • Щелкните правой кнопкой мыши значок CMD.EXE и выберите Properties.
  • В поле "Цель" перейдите в конец "%SystemRoot%\system32\cmd.exe" и введите " /C ", а путь и имя командного файла.

В ваших целях вы можете:

  • Используйте /C и поместите PAUSE в конец вашего пакетного файла.

    ИЛИ

  • Измените командную строку на использование /K и удалите PAUSE из вашего пакетного файла.

Ответ 2

Здесь:

cmd.exe /k "<SomePath>\<My Batch File>.bat" & pause

Посмотрите, что вы делаете:

  • (cmd/K) Запустите новый экземпляр cmd.
  • (& pause) Пауза CURRENT cmd.

Как его решить? ну, используя правильный синтаксис, включающий аргумент для нового экземпляра CMD:

cmd.exe /k ""<SomePath>\<My Batch File>.bat" & pause"

Ответ 3

Я только что написал последнюю строку как Пауза, она отлично работала как с .bat, так и с .cmd. Он отобразит сообщение также как "Нажмите любую клавишу, чтобы продолжить".

Ответ 4

В последней строке командного файла, который вы хотите сохранить, введите

pause >nul

Ответ 5

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

' & pause'

Ответ 6

Вы можете просто поместить pause команду в последнюю строку вашего командного файла:

@echo off
echo Hey, I'm just doing some work for you.
pause

Вы получите что-то вроде этого в качестве вывода:

Эй, я просто делаю для вас какую-то работу.

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

Примечание. Использование @echo предотвращает вывод команды перед печатью вывода.

Ответ 7

положить в конец, он снова откроет консоль.

start cmd 

Ответ 8

Я просто нажимаю Enter и нажимаю Pause и отлично работает