【问题标题】:Windows batch script launch program and exit consoleWindows 批处理脚本启动程序和退出控制台
【发布时间】:2011-08-20 00:32:49
【问题描述】:

我有一个用于启动程序的批处理脚本,例如notepad.exe。当我双击这个批处理文件时,记事本正常启动,但是启动notepad.execmd的黑色窗口仍然在后台。我需要做什么才能启动notepad.exe 并使 cmd 窗口消失?

编辑:比使用\I更复杂。

cmd 调用 cygwincygwin 开始 notepad。我用

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

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

【问题讨论】:

    标签: windows batch-file cmd


    【解决方案1】:
    start "" ExeToExecute
    

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

    所以事实上不起作用的是

    start "" BatToExecute
    

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

    在启动 xsdk 之前,我运行(来源)Env / Paths(使用 settings64.bat)以便识别 xsdk.bat 命令(简单地作为 xsdk,没有 .bat em>)

    .bat

    的作用
    call BatToExecute
    

    【讨论】:

    • 这可能回答了一个问题,但不是这个问题。问题是关于启动一个 .exe 文件 (notepad.exe) 并将其与 cmd.exe 分离。你回答如何在同一个实例中启动一个 .bat 文件
    【解决方案2】:
    start "" "%SystemRoot%\Notepad.exe"
    

    "" 保留在 start 和您的应用程序路径之间。


    补充说明:

    通常当我们从像下面这样的批处理文件中启动程序时,我们会像 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>" 
    

    【讨论】:

    • 注意:当您想以这种方式启动 java jar 文件时,请确保使用javaw 可执行文件(不仅仅是java,因为java 将启动另一个批处理窗口):例如start "" "javaw" -jar C:\JavaProject\myApp.jar
    • @checksum 请您也扩展您的示例,说明如何重定向启动的应用程序的标准错误和标准输出?
    • @Starfish 我认为记事本没有标准输出和标准错误。但是对于您的问题,它类似于application.exe &gt; stdout.txt 2&gt;stderr.txt。将您的问题添加到上述答案将偏离原始发帖人的问题。也许你可以开始一个新的问题来更详细地问。
    • 完全没有意义的解决方案。 Windows 再次获胜。
    【解决方案3】:

    最简单的方法就是以start开头

    start notepad.exe
    

    Here你可以找到更多关于start的信息

    【讨论】:

      【解决方案4】:

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

      【讨论】:

      • 这不会关闭cmd窗口%ComSpec% /c emacs.exe "-rv" "--no-splash"
      【解决方案5】:

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

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

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

      【讨论】:

      • 在 Windows 10 上出现错误 "The system cannot find the batch label specified - ENDF"
      【解决方案6】:

      使用start notepad.exe

      更多信息start /?

      【讨论】:

      • 究竟是哪个论点? /B?我读过,但如果我使用start /B notepad.exe,cmd 窗口不会消失。
      • 好的,比使用\I 更复杂。 cmd调用cygwin,cygwin启动记事本。我使用start \I cygwin,第一个窗口消失了,但第二个窗口仍在背景上。在 cygwin 脚本中,我使用了notepad.exe &amp;,然后使用了exit
      • cygstart 启动记事本,但控制台仍然在后台。
      猜你喜欢
      • 2012-02-27
      • 2014-12-03
      • 1970-01-01
      • 1970-01-01
      • 2016-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多