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


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"

6

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


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

5

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

pause >nul


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

3

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

' & pause'

2

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

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

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

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

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

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



-1

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

start cmd 

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

-5

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.