批处理文件执行后如何自动关闭cmd窗口?

时间:2013-02-04 23:37:14

标签: batch-file cmd

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

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添加到批处理文件的最后一行,但无济于事。

11 个答案:

答案 0 :(得分:95)

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

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

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

答案 1 :(得分:7)

对于看新手: -

  • 您通常会使用只显示退出
  • 的行结束批处理文件

*如果你想确保文件已经运行,并且在2秒后DOS窗口关闭,你可以添加这些行:

超时2> nul

出口

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

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

开始"" " C:\ BgInfo \ BgInfo.exe" /弹出

出口

答案 2 :(得分:4)

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

move nul 2>&0

尝试将 nul 移动到任何地方并将 stderr 重定向到 stdin 将导致当前窗口 cmd.exe 被关闭

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

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

答案 3 :(得分:3)

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

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

答案 4 :(得分:1)

如果要将命令分成每个文件一个命令,可以执行

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后关闭命令提示符窗口。

答案 5 :(得分:0)

你可以尝试一些有点危险的:taskkill /IM cmd.exe ..危险的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) 

如果您想先检查(pslist &&A),可以替换(tasklist /FI "PID eq %%A")(taskkill /PID %%A)。(可能已安装了pstools)。

答案 6 :(得分:0)

在执行代码的末尾添加此代码

c:\ windows>退出

答案 7 :(得分:0)

这对我有用

cd "C:\Program Files\SmartBear\SoapUI-5.6.0\bin"

start SoapUI-5.6.0.exe -w "C:\DATA\SoapUi\Workspaces\Production-workspace.xml"

exit

答案 8 :(得分:0)

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

答案 9 :(得分:-1)

只需尝试以下所列的/s

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

exit /s

上面的命令将关闭Windows CMD窗口。

/s-代表无声(它将等待来自键盘的输入)。

答案 10 :(得分:-2)

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

即:contents.bat读取

cd subfolder
"contents.html"
exit

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