我有一个用于启动程序的批处理脚本,例如notepad.exe
。当我双击此批处理文件时,记事本正常启动,但启动cmd
的{{1}}的黑色窗口仍在后台。为了启动notepad.exe
并使cmd窗口消失,我该怎么做?
修改:比使用notepad.exe
更复杂。
\I
来电cmd
,cygwin
来电cygwin
。我用
notepad
并且第一个窗口(cmd)消失,但第二个窗口(\ cygwin \ bin \ bash.exe)仍然在后台。在cygwin脚本中,我使用start \I \path\cygwin\bin\bash.exe
然后退出。
答案 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)
答案 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