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

105

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

  1. «Мой пакетный файл»> 2. «Другой пакетный файл»

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

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

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

Платформа: Windows7


ОБНОВЛЕНИЕ 1

Изменена структура, простой пример, подобный этому, тоже не работает. Только один командный файл, т.е. нет 2. «Другой командный файл». Единственный командный файл содержит что-то подобное

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

ОБНОВЛЕНИЕ 2

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

Есть идеи, как держать окно консоли открытым?

Деймус
источник
Я полагаю, вы хотите, My Batch Fileчтобы он остался?
Marc B
Вопрос «Приятно

Ответы:

126

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

start /B /LOW /WAIT make package
PAUSE

Затем просто укажите ярлык на "My Batch File.bat"... запускать его не нужно CMD /K.

ОБНОВИТЬ

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

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

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

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

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

    ИЛИ

  2. Измените используемую командную строку /Kи удалите PAUSEиз командного файла.
афория
источник
Я уже сделал это, в основном мой вопрос не в том, как вызвать командный файл
anohter
Затем нам нужно увидеть содержимое обоих командных файлов.
афория 06
Пожалуйста, посмотрите обновленный вопрос
deimus
Та же проблема, замена CMD / K не работает. Почему консольное окно не закрывается, если ярлык вызывается из проводника?
deimus 06
13

Здесь:

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

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

  1. (cmd / K) Запустить НОВЫЙ экземпляр cmd.
  2. (& пауза) Приостановить экземпляр CURRENT cmd.

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

cmd.exe /k ""<SomePath>\<My Batch File>.bat" & pause"
ElektroStudios
источник
6

Я просто написал последнюю строку как Pause, она отлично работает как с .bat, так и с .cmd. Также будет отображаться сообщение «Нажмите любую клавишу, чтобы продолжить».

Сай
источник
Это правильный ответ! Должен быть верхний голос.
Патрик Хиллер,
5

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

pause >nul

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

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

' & pause'
Умберто
источник
2

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

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

На выходе вы получите что-то вроде этого:

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

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

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

Патрик Хиллер
источник
0
rem Just use "pause" at the end of the batch file.
...
......
.......
pause
Давид Кастро
источник
-1

поставьте в конце, он снова откроет вашу консоль

start cmd 
Ник
источник
Это не решает проблемы, пользователь хочет оставить окно открытым, а не открывать старое.
Адам
-5

Я просто нажимаю ввод и набираю Пауза, и все работает нормально

Jfly 27
источник