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


156

Есть ли способ выполнить приложение без ожидания в командном файле? Я попробовал startкоманду, но она просто создает новое командное окно.


3
Обратите внимание - для тех, кто занимается запутанным сценарием с помощью пакетных сценариев Windows: если процесс C находится startв call-ed .bat-файле B (который, в свою очередь, был вызван из A ), а C остается открытым после завершения B (скажем, C является службой или чем-то, что просто ожидает, когда что-то произойдет, и не имеет фиксированной конечной точки до тех пор, пока ОС не завершит работу), родительский объект A, который содержал, callможет быть не в состоянии завершиться, как ожидается, если процесс C не закрывается или не завершен. убит. Вот простой пример: codepad.org/KLglXDnZ
SeldomNeedy

Ответы:


306

Я делаю предположение здесь, но ваш startвызов, вероятно, выглядит следующим образом:

start "\Foo\Bar\Path with spaces in it\program.exe"

Откроется новое окно консоли с именем «\ Foo \ Bar \ Path с пробелами в нем \ program.exe».

Если вы используете startчто-то, что (или должно быть) окружено кавычками, вам нужно поставить пустые кавычки в качестве первого аргумента:

start "" "\Foo\Bar\Path with spaces in it\program.exe"

Это потому, что startинтерпретирует первый аргумент в кавычках, который он находит, как заголовок окна для нового окна консоли.


17
Отличный совет с двойными кавычками перед фактическим путем. Я бы никогда не догадался об этом. Спасибо, что поделились.
Александру Дику

спасибо, это помогло. Я также использовал опцию / SEPARATE, как упоминалось в ss64.com/nt/start.html
Ayusman

1
@Ayusman: эти опции только для 16-битных программ. Я, конечно, надеюсь, что у вас нет никого из тех, кто еще рядом.
Джои,

4
Конечно, это не обязательно должны быть пустые кавычки ... вы можете дать ему актуальное название. Я настоятельно рекомендовал бы это, поскольку это сделает это намного более ясным для других людей, которые видят это, что продолжается. start "Obligatory Atavistic Window Title" "\Foo\Bar\Path with spaces in it\program.exe"
Shis

1
После часов поисков я наконец-то нашел ответ. Спасибо!
Sellorio


8

Я использовал start / b вместо этого вместо start, и он запускался без окна для каждой команды, поэтому ждать не пришлось.


Именно то, что я искал!
Фабио Аморим

4

Если startне можете найти то, что он ищет, он делает то, что вы описываете.

Поскольку то, что вы делаете, должно работать, очень вероятно, что вы пропускаете некоторые цитаты (или помещаете дополнения).


Да, я поставил две цитаты. Но они необходимы для длинного пути. Как решить проблему?
Марк Этвуд
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.