【问题标题】:How to automatically close cmd window after batch file execution?批处理文件执行后如何自动关闭cmd窗口?
【发布时间】:2013-02-04 23:37:14
【问题描述】:

我正在运行一个包含这两行的批处理文件:

start C:\Users\Yiwei\Downloads\putty.exe -load "MathCS-labMachine1"
"C:\Program Files (x86)\Xming\Xming.exe" :0 -clipboard -multiwindow

此批处理文件用于运行 Xming 应用程序,然后是 PuTTY 应用程序,以便我可以通过 SSH 连接到我大学的计算机实验室。

但是,如果我运行它并且 Xming 尚未打开,则一旦我从 PuTTY 终端退出,cmd 窗口将保持打开状态。只有当我已经运行 Xming 时,当我关闭 PuTTY 终端时,cmd 窗口才会关闭。我尝试将exit 添加到批处理文件的最后一行,但无济于事。

【问题讨论】:

  • "C:\Program Files (x86)\Xming\Xming.exe" 来自 putty.exe 的参数,还是单独的命令?
  • 如果第二行是第二个命令,请尝试在其之前添加 start。
  • @BernhardPoiss 它是一个单独的命令,而不是 putty.exe 的参数。如果我把那条线放在第一位,它会挂起并且不会打开腻子。如果我把 start 放在它前面,windows 会说“找不到'C:\Program'。请确保它输入正确。
  • 恭喜!对这个问题有百分之一的赞。

标签: batch-file cmd


【解决方案1】:

将批处理文件修改为START 两个程序,而不是STARTing 一个和CALLing 另一个

start C:\Users\Yiwei\Downloads\putty.exe -load "MathCS-labMachine1"
start "" "C:\Program Files (x86)\Xming\Xming.exe" :0 -clipboard -multiwindow

如果你这样运行它,启动程序后不会有 CMD 窗口保持打开状态。

【讨论】:

  • +1 除非您对路径使用双引号,否则您必须添加"" 的第一个参数,因为标题成为必需的。第二个命令应该是start "" "C:\Program Files (x86)\Xming\Xming.exe" :0 -clipboard -multiwindow 否则它将尝试打开一个标题为C:\Program Files (x86)\Xming\Xming.exe 的命令窗口,尝试使用参数:0 执行-clipboard -multiwindow
  • 另外,这个start /B "GCFScape" "x64\GCFScape.exe">nul 的例子对我很有帮助
  • "如果 command 是内部 cmd 命令或批处理文件,则使用 /K 切换到 cmd.exe 运行命令处理器。这意味着在运行命令后窗口将保留。 " ss64.com/nt/start.html
  • @CADbloke 您提到的问题可以使用cmd.exe /C "start cmd.exe /C [...].bat ..."解决
  • @patrick-meinecke 感谢您添加关于“”的评论,我很沮丧这给我带来了问题。我读到你的评论,然后是啊哈时刻。
【解决方案2】:

您通常会以仅显示exit 的行结束批处理文件。如果要确保文件已运行并且 DOS 窗口在 2 秒后关闭,可以添加以下行:

timeout 2 >nul
exit

但是如果您的批处理文件打开另一个窗口,exit 命令将不起作用,因为当第二个窗口打开时,旧的 DOS 窗口也会显示。

解决方案: 例如,有一个很棒的小免费程序,名为 BgInfo,它将显示有关您计算机的所有信息。假设它位于名为C:\BgInfo 的目录中,要使用/popup 开关从批处理文件运行它并在它仍在运行时关闭DOS 窗口,请使用:

start "" "C:\BgInfo\BgInfo.exe" /popup
exit

【讨论】:

  • 拥有/popup 实际上给了我一个错误。删除后一切正常
【解决方案3】:

关闭当前的cmd窗口 立即,只需添加为最后一个命令/行:

<b>move nul 2&gt;&amp;0</b>

尝试将 nul 移动到无处并将 stderr 重定向到 stdin 将导致当前的window cmd.exe 被关闭

这不同于关闭蝙蝠,或使用goto :EOFExit /b退出

我什至打开了一个问题来寻找可以解释行为的答案。 Would that be a bug? Immediate closing of the current cmd window when executing: move nul 2>&0

【讨论】:

  • 就我而言,我必须执行以下“2>&0 > /dev/null &”。但好主意。谢谢。
  • 唯一有效的方法......对于所有那些建议退出 /b 或 cmd /c 的答案感到羞耻。谢谢!
【解决方案4】:

如果你想将命令分成每个文件一个命令,你可以这样做

cmd /c start C:\Users\Yiwei\Downloads\putty.exe -load "MathCS-labMachine1"

在另一个文件中,你可以这样做

cmd /c start "" "C:\Program Files (x86)\Xming\Xming.exe" :0 -clipboard -multiwindow

命令 cmd /c 将在 exe 运行后关闭命令提示符窗口。

【讨论】:

  • "cmd /c" 效果很好,解决了我的问题
【解决方案5】:

我做了下面的事情

start ""
** code
exit

这对我有用

【讨论】:

    【解决方案6】:

    你可以试试有点危险的:taskkill /IM cmd.exe ..dangerous bcz,它会杀死打开的 cmd 以及在它之前打开的任何 cmd。

    或者添加一个验证来确认你有正确的cmd.exe,然后通过PID杀死它,比如这样:

    set loc=%time%%random%
    title=%loc%
    for /f "tokens=2 delims= " %%A in ('tasklist /v ^| findstr /i "%loc%"') do (taskkill /PID %%A) 
    

    如果您想先检查(taskkill /PID %%A),请将(pslist &amp;&amp;A)(tasklist /FI "PID eq %%A") 替换为(taskkill /PID %%A)(并且可能已安装pstools)。

    【讨论】:

      【解决方案7】:

      我有这个,我添加了EXIT,但最初它没有用,我想每需要这里另一个回复中提到的called program exiting 建议,但是它现在可以毫不费力地工作 - 不确定是什么原因造成的,但是需要注意的一点是,我调用的是数据文件.html,而不是处理它的程序browser.exe,我没有编辑任何其他内容,但足以说明使用bat文件访问主文件要整洁得多访问这些 Web 文档的页面,并且在根文件夹中只有 title.batcontents.batindex.bat,其余内容在子文件夹中。

      即:contents.bat 读取

      cd subfolder
      "contents.html"
      exit
      

      如果我只更改这些项目的 bat 文件图标以适应它们所在的上下文,它看起来也会更好,但这是另一回事,将 bat 文件隐藏在子文件夹中并在根文件夹中为它们创建自定义图标快捷方式需要自定义的图像也被隐藏了。

      【讨论】:

        【解决方案8】:

        试试下面列出的/s

        作为批处理文件类型的最后一行:

        exit /s
        

        以上命令将关闭 Windows CMD 窗口。

        /s - 代表静默(它会等待键盘输入)。

        【讨论】:

        • cmdexit 命令没有/s 开关(无论如何这毫无意义)
        • 您可以使用exit /any_character 来获得相同的结果,所以没有什么新的...试试这个exit /pizza 这也一样...
        【解决方案9】:

        这对我有用。我只是想在退出游戏后自动关闭命令窗口。我只需双击桌面上的 .bat 文件。没有捷径。

        taskkill /f /IM explorer.exe
        C:\"GOG Games"\Starcraft\Starcraft.exe
        start explorer.exe
        exit /B
        

        【讨论】:

          【解决方案10】:

          有时您可以参考Windows“快捷方式”文件来启动应用程序,而不是使用“.bat”文件,这样就不会出现残留提示问题。但它不如 bat 文件灵活。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2013-09-15
            • 1970-01-01
            • 2023-03-25
            • 1970-01-01
            • 1970-01-01
            • 2013-01-15
            • 1970-01-01
            • 2010-11-08
            相关资源
            最近更新 更多