Windows批处理脚本启动程序和退出控制台

时间:2011-05-06 08:52:50

标签: windows batch-file cmd

我有一个用于启动程序的批处理脚本,例如notepad.exe。当我双击此批处理文件时,记事本正常启动,但启动cmd的{​​{1}}的黑色窗口仍在后台。为了启动notepad.exe并使cmd窗口消失,我该怎么做?

修改:比使用notepad.exe更复杂。

\I来电cmdcygwin来电cygwin。我用

notepad

并且第一个窗口(cmd)消失,但第二个窗口(\ cygwin \ bin \ bash.exe)仍然在后台。在cygwin脚本中,我使用start \I \path\cygwin\bin\bash.exe然后退出。

7 个答案:

答案 0 :(得分:159)

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>" 

答案 1 :(得分:9)

使用start notepad.exe

start /?的更多信息。

答案 2 :(得分:5)

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

答案 3 :(得分:5)

最简单的方法就是用start

开始
start notepad.exe

Here您可以找到有关start

的更多信息

答案 4 :(得分:1)

嗯......我在我的一个批处理文件中这样做,不使用CALL或START:

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

虽然我没有安装Cygwin,但我使用的是Windows XP。

答案 5 :(得分:0)

start "" ExeToExecute

对于Xilinx xsdk而言,该方法不适用于我,因为@jeb在下面的注释中指出,它实际上是一个蝙蝠文件。

所以实际上不起作用的是

start "" BatToExecute

我正在尝试像这样打开xsdk,它会打开一个需要关闭的单独的cmd,并且xsdk可以自行运行

在启动xsdk之前,我运行(源)Env / Paths(使用 settings64.bat ),以便可以识别xsdk.bat命令(简称为xsdk,并附带 .bat

.bat

一起使用
call BatToExecute

答案 6 :(得分:-3)

尝试启动path\to\cygwin\bin\bash.exe