Программа запуска пакетного сценария Windows и выхода из консоли


90

У меня есть пакетный сценарий, который я использую для запуска программы, например notepad.exe. Когда я дважды щелкаю этот командный файл, блокнот запускается нормально, но черное окно того, cmdкто запустил, notepad.exeостается в фоновом режиме. Что мне нужно сделать, чтобы запустить notepad.exeи заставить окно cmd исчезнуть?

edit : сложнее, чем использовать \I.

На cmdзвонки cygwinи cygwinначинается notepad. я использую

start \I \path\cygwin\bin\bash.exe

и первое окно (cmd) исчезает, но второе окно (\ cygwin \ bin \ bash.exe) все еще находится в фоновом режиме. В сценарии cygwin я использовал, notepad.exe &а затем выйду.

Ответы:


204
start "" "%SystemRoot%\Notepad.exe"

Сохраняйте ""промежуток между началом и путем к приложению.


Добавлено объяснение:

Обычно, когда мы запускаем программу из командного файла, как показано ниже, у нас будут черные окна на заднем плане, как сказал OP.

%SystemRoot%\Notepad.exe

Это было вызвано тем, что Блокнот работал в той же командной строке (процессе). Командная строка закроется ПОСЛЕ закрытия блокнота. Чтобы этого избежать, мы можем использовать startкоманду для запуска отдельного процесса, подобного этому.

start %SystemRoot%\Notepad.exe

Эта команда подходит, если в пути нет места. Чтобы на всякий случай обработать пространство в пути, мы добавили такие "кавычки.

start "%SystemRoot%\Notepad.exe"

Однако выполнение этой команды просто запустит еще одну пустую командную строку. Зачем? Если вы посмотрите на start /?, startкоманда распознает аргумент между ними "как заголовок новой командной строки, которую она собирается запустить. Итак, чтобы решить эту проблему, у нас есть такая команда:

start "" "%SystemRoot%\Notepad.exe"

Первый аргумент ""- установить заголовок (который мы установили как пустой), а второй аргумент "%SystemRoot%\Notepad.exe"- это целевая команда для запуска (которая поддерживает пробелы в пути).

Если вам нужно добавить параметры к команде, просто добавьте их в кавычки, например:

start "" "%SystemRoot%\Notepad.exe" "<filename>" 

12
примечание: когда вы хотите запустить java-файл jar таким образом, убедитесь, что используете javawисполняемый файл (не только javaпотому, что javaзапустит другое пакетное окно): напримерstart "" "javaw" -jar C:\JavaProject\myApp.jar
TmTron

@checksum Не могли бы вы также расширить свой пример о том, как перенаправить стандартную ошибку и стандартный вывод запускаемого приложения?
Starfish

@Starfish Я думаю, что в блокноте нет stdout и stderr. Но на ваш вопрос было бы что-то вроде application.exe > stdout.txt 2>stderr.txt. Добавление вашего вопроса к приведенному выше ответу будет отличаться от вопроса исходного плаката. Может быть, вы можете начать новый вопрос, чтобы задать более подробно.
контрольная сумма

1
Совершенно бессмысленное решение. Винда снова выигрывает.
Ярослав Рахматуллин

9

Используйте start notepad.exe.

Больше информации с start /?.


1
И какой именно аргумент? /B? Прочитал, но при использовании start /B notepad.exeокно cmd не исчезает.
Possa

Хорошо, это сложнее, чем использовать \I. Команда cmd вызывает cygwin, а cygwin запускает блокнот. Я использую, start \I cygwinи первое окно исчезает, но второе окно остается на заднем плане. В сценарии cygwin я использовал notepad.exe &а затемexit
Possa

cygstart запускает блокнот, но консоль остается в фоновом режиме.
Possa

5

Самый простой способ - это просто начать с start

start notepad.exe

Здесь вы можете найти дополнительную информацию оstart


4

%ComSpec% /c %systemroot%\notepad.exe


это не закрывает окно cmd%ComSpec% /c emacs.exe "-rv" "--no-splash"
jcubic

0

Хм ... я делаю это в одном из моих командных файлов, например, без использования CALL или START:

%SystemRoot%\notepad.exe ..\%URI%
GOTO ENDF

Однако у меня не установлен Cygwin, и я использую Windows XP.


Получил ошибку "The system cannot find the batch label specified - ENDF"в Windows 10
jcubic

0
start "" ExeToExecute

Метод не работает для меня в случае Xilinx xsdk, потому что, как указано @jeb в комментариях ниже, это фактически файл bat.

так что де-факто не работает

start "" BatToExecute

Я пытаюсь открыть xsdk таким образом, и он открывает отдельный cmd, который необходимо закрыть, и xsdk может работать сам по себе

Перед запуском xsdk я запускаю (источник) Env / Paths (с settings64.bat ), чтобы команда xsdk.bat распознавалась (просто как xsdk, без .bat )

что работает с .bat

call BatToExecute

2
Это, наверное, ответ на вопрос, но не на этот. Вопрос в том, чтобы запустить .exe файл ( notepad.exe) с отвязкой от cmd.exe. Вы отвечаете, как запустить .bat файл в том же экземпляре
jeb

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