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


90

我有一个用于启动程序的批处理脚本,例如notepad.exe。当我双击这个批处理文件,记事本可以正常启动,但附近的黑色窗口cmd是谁发动notepad.exe仍在后台。为了启动notepad.exe并使cmd窗口消失,我该怎么办?

编辑:比使用更复杂\I

cmd电话cygwin,和cygwin开始notepad。我用

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

并且第一个窗口(cmd)消失了,但是第二个窗口(\ cygwin \ bin \ bash.exe)仍然在背景上。在我使用的cygwin脚本中notepad.exe &,然后退出。

Answers:


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

12
注意:当您要以这种方式启动Java jar文件时,请确保使用javaw可执行文件(而不仅仅是java,因为java它将启动另一个批处理窗口):例如start "" "javaw" -jar C:\JavaProject\myApp.jar
TmTron

@checksum请您也扩展一下有关如何重定向启动的应用程序的标准错误和标准输出的示例吗?
海星

@海星我认为记事本没有stdout和stderr。但是对于您的问题,它将是类似application.exe > stdout.txt 2>stderr.txt。将您的问题添加到以上答案将与原始海报的问题有所不同。也许您可以提出一个新的问题来详细询问。
校验和

1
毫无意义的解决方案。Windows再次获胜。
ЯрославРахматуллин

9

使用start notepad.exe

的更多信息start /?


1
究竟是哪个论点?/B?我读了,但是如果我使用start /B notepad.execmd窗口不会消失。
Possa,2011年

好的,比使用还要复杂\I。cmd调用cygwin,然后cygwin启动记事本。我使用start \I cygwin的第一个窗口消失了,但是第二个窗口仍然在背景上。在cygwin脚本中,我使用了notepad.exe &exit
-Possa,2011年

cygstart启动记事本,但控制台仍在后台。
波萨2011年



0

嗯...我在这样的批处理文件之一中执行此操作,而无需使用CALL或START:

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

我没有安装Cygwin,但是我在Windows XP上。


"The system cannot find the batch label specified - ENDF"在Windows 10上出现错误
jcubic,

0
start "" ExeToExecute

在Xilinx xsdk的情况下,该方法对我不起作用,因为@jeb在下面的注释中指出,它实际上是一个bat文件。

所以事实上不起作用的是

start "" BatToExecute

我试图像这样打开xsdk,它打开了一个需要关闭的单独的cmd,xsdk可以自己运行

在启动xsdk之前,我运行(源)Env / Paths(带有settings64.bat),以便xsdk.bat命令被识别(简称为xsdk,而.bat

什么与.bat一起使用

call BatToExecute

2
这可能会回答一个问题,但不能回答这个问题。问题是关于启动.exe文件(notepad.exe)并将其与cmd.exe解耦。您回答了如何在同一实例中启动.bat文件
jeb

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.