Windows Batch script uruchamia program i kończy konsolę

Mam skrypt wsadowy, którego używam do uruchamiania programu, np. notepad.exe. Po dwukrotnym kliknięciu tego pliku wsadowego notatnik uruchamia się normalnie, ale czarne okno cmd, który uruchomił notepad.exe, pozostaje w tle. Co muszę zrobić, aby uruchomić notepad.exe i sprawić, że okno cmd zniknie?

Edycja : jest bardziej skomplikowana niż użycie \I.

The cmd calls cygwin, and cygwin starts notepad. Używam

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

I pierwsze okno (cmd) znika, ale drugie okno (\cygwin \ bin \ bash.exe) jest nadal w tle. W skrypcie cygwin użyłem notepad.exe &, a następnie zakończyłem.

Author: Marcel Gosselin, 2011-05-06

6 answers

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

Zachowaj "" pomiędzy startem a ścieżką aplikacji.


Dodano Wyjaśnienie:

Normalnie kiedy uruchamiamy program z pliku wsadowego jak poniżej, będziemy mieli czarne okna w tle jak powiedział OP.

%SystemRoot%\Notepad.exe

To było spowodowane przez Notatnik uruchomiony w tym samym wierszu polecenia (procesie). Wiersz polecenia zostanie zamknięty po zamknięciu notatnika. Aby tego uniknąć, możemy użyć polecenia start, aby rozpocząć oddzielny proces, taki jak to.

start %SystemRoot%\Notepad.exe

To polecenie jest w porządku, dopóki nie ma miejsca w ścieżce. Aby obsłużyć spację w ścieżce na wszelki wypadek, dodaliśmy " cudzysłowy w ten sposób.

start "%SystemRoot%\Notepad.exe"

Jednak uruchomienie tego polecenia spowoduje uruchomienie kolejnego pustego wiersza polecenia. Dlaczego? Jeśli wyszukasz start /?, polecenie start rozpozna argument pomiędzy " jako tytuł nowego wiersza polecenia, który ma zostać uruchomiony. Więc, aby to rozwiązać, mamy polecenie jak to:

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

Pierwszym argumentem {[6] } jest ustawienie tytułu (które ustawiamy jako puste), a drugim argumentem "%SystemRoot%\Notepad.exe" jest komendą docelową do uruchomienia (obsługującą spacje w ścieżce).

Jeśli chcesz dodać parametry do polecenia, po prostu dołącz je, np.:

start "" "%SystemRoot%\Notepad.exe" "<filename>" 
 145
Author: checksum,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-08 09:59:08

Użyj start notepad.exe.

Więcej informacji z start /?.

 6
Author: Benoit,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-05-06 08:54:03

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

 4
Author: MrBogus,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-08-01 17:04:30

Najprostszy sposób to zacząć od start

start notepad.exe

Tutaj znajdziesz więcej informacji o start

 3
Author: brothers28,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-04 09:48:05

Hmm... robię to w jednym z moich plików wsadowych, bez użycia CALL lub START :

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

Nie mam zainstalowanego Cygwina i jestem na Windows XP.

 0
Author: djangofan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-09-27 21:55:15

Spróbuj zacząć path\to\cygwin\bin\bash.exe

 -3
Author: yyyx,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-11 20:55:21