Windows batch script launch program and exit conso

2019-01-10 09:28发布

I have a batch script that I use to launch a program, such as notepad.exe. When I double click on this batch file, notepad starts normally, but the black window of the cmd who launched notepad.exe remains in the background. What do I have to do in order to launch notepad.exe and make the cmd window disappear?

edit: is more complicated than using \I.

The cmd calls cygwin, and cygwin starts notepad. I use

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

and the first window (cmd) disappears, but a second window (\cygwin\bin\bash.exe) is still on the background. In the cygwin script I used notepad.exe & and then exit.

6条回答
太酷不给撩
2楼-- · 2019-01-10 09:36

Try to start path\to\cygwin\bin\bash.exe

查看更多
Luminary・发光体
3楼-- · 2019-01-10 09:37

The simplest way ist just to start it with start

start notepad.exe

Here you can find more information about start

查看更多
老娘就宠你
4楼-- · 2019-01-10 09:50

Use start notepad.exe.

More info with start /?.

查看更多
趁早两清
5楼-- · 2019-01-10 09:50

Hmm... i do it in one of my batch files like this, without using CALL or START :

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

I don't have Cygwin installed though and I am on Windows XP.

查看更多
做自己的国王
6楼-- · 2019-01-10 09:57

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

查看更多
迷人小祖宗
7楼-- · 2019-01-10 10:02
start "" "%SystemRoot%\Notepad.exe"

Keep the "" in between start and your application path.


Added explanation:

Normally when we launch a program from a batch file like below, we'll have the black windows at the background like OP said.

%SystemRoot%\Notepad.exe

This was cause by Notepad running in same command prompt (process). The command prompt will close AFTER notepad is closed. To avoid that, we can use the start command to start a separate process like this.

start %SystemRoot%\Notepad.exe

This command is fine as long it doesn't has space in the path. To handle space in the path for just in case, we added the " quotes like this.

start "%SystemRoot%\Notepad.exe"

However running this command would just start another blank command prompt. Why? If you lookup to the start /?, the start command will recognize the argument between the " as the title of the new command prompt it is going to launch. So, to solve that, we have the command like this:

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

The first argument of "" is to set the title (which we set as blank), and the second argument of "%SystemRoot%\Notepad.exe" is the target command to run (that support spaces in the path).

If you need to add parameters to the command, just append them quoted, i.e.:

start "" "%SystemRoot%\Notepad.exe" "<filename>" 
查看更多
登录 后发表回答