Jak uruchomić aplikację bez czekania w pliku wsadowym?

156

Czy istnieje sposób na wykonanie aplikacji bez czekania w pliku wsadowym? Wypróbowałem startpolecenie, ale po prostu tworzy nowe okno poleceń.

Mark Attwood
źródło
3
Uwaga - dla tych, którzy wykonują skomplikowane rzeczy ze skryptami wsadowymi systemu Windows: jeśli proces C znajduje się startw pliku call-ed .bat B (który z kolei został wywołany z A ), a C pozostaje otwarte po zakończeniu B (powiedzmy C jest usługą lub czymś, co po prostu czeka, aż coś się wydarzy i nie ma ustalonego punktu końcowego, dopóki system operacyjny nie zostanie zamknięty), nadrzędny A, który zawierał, callmoże nie być w stanie zakończyć zgodnie z oczekiwaniami, chyba że proces C zostanie zamknięty lub zabity. Oto prosty przykład: codepad.org/KLglXDnZ
SeldomNeedy

Odpowiedzi:

306

Zgaduję, ale twoje startwezwanie prawdopodobnie wygląda tak:

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

Spowoduje to otwarcie nowego okna konsoli z tytułem „\ Foo \ Bar \ Path ze spacjami \ program.exe”.

Jeśli używasz startczegoś, co jest (lub powinno być) otoczone cudzysłowami, musisz umieścić puste cudzysłowy jako pierwszy argument:

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

Dzieje się tak, ponieważ pierwszy znaleziony argument w cudzysłowiestart interpretuje jako tytuł nowego okna konsoli.

Joey
źródło
17
Świetna wskazówka z podwójnymi cudzysłowami przed właściwą ścieżką. Nigdy bym tego nie odgadł. Dziękuję za udostępnienie.
Alexandru Dicu
dzięki, pomogło. Użyłem również opcji / SEPARATE, jak wspomniano w ss64.com/nt/start.html
Ayusman,
1
@Ayusman: Te opcje dotyczą tylko programów 16-bitowych. Z pewnością mam nadzieję, że nikogo z nich nie ma w pobliżu.
Joey
4
Oczywiście nie muszą to być puste cudzysłowy ... możesz nadać mu odpowiedni tytuł. Gorąco poleciłbym to, ponieważ dzięki temu stanie się znacznie jaśniejsze dla innych ludzi, którzy widzą, co się dzieje. start "Obligatory Atavistic Window Title" "\Foo\Bar\Path with spaces in it\program.exe"
shiser
1
Po godzinach googlowania w końcu znajduję odpowiedź. Dzięki!
Sellorio
9

Jeśli twój exe przyjmuje argumenty,

start MyApp.exe -arg1 -arg2
Shital Shah
źródło
8

Użyłem do tego start / b zamiast po prostu start i działało bez okna dla każdego polecenia, więc nie było czekania.

Ed Bayiates
źródło
Dokładnie to, czego szukałem!
Fábio Amorim
4

Jeśli startnie możesz znaleźć tego, czego szuka, robi to, co opisujesz.

Ponieważ to, co robisz, powinno działać, jest bardzo prawdopodobne, że pomijasz niektóre cytaty (lub wstawiasz dodatki).

egrunin
źródło
Tak, umieściłem dwa cytaty. Ale są one wymagane w przypadku długich nazw ścieżek. Jak rozwiązać ten problem?
Mark Attwood