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


88

我正在运行具有以下两行的批处理文件:

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


1
"C:\Program Files (x86)\Xming\Xming.exe"来自putty.exe的参数,还是单独的命令?
bpoiss

如果第二行是第二条命令,请尝试在此之前添加start。
2013年

1
@BernhardPoiss这是一个单独的命令,而不是putty.exe的参数。如果我把那条线放在第一位,它会挂起来并且不会打开腻子。如果我把它放在前面,Windows会说“找不到'C:\ Program'。请确保它正确键入
。– yiwei

Answers:


134

修改批处理文件到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窗口会保持打开状态。


28
+1,除非您在路径中使用双引号,否则必须添加第一个参数“ ""title”。第二个命令应该是start "" "C:\Program Files (x86)\Xming\Xming.exe" :0 -clipboard -multiwindow其他情况,否则它将尝试打开一个标题为C:\Program Files (x86)\Xming\Xming.exe尝试:0使用参数执行的命令窗口-clipboard -multiwindow
Patrick Meinecke

另外,这个start /B "GCFScape" "x64\GCFScape.exe">nul例子对我也有帮助
xacinay 2014年

4
“如果命令是内部cmd命令或批处理文件,则使用/ K开关将命令处理器运行到cmd.exe。这意味着在运行命令后该窗口将保留。” ss64.com/nt/start.html
CAD

3
@CADbloke您可以使用cmd.exe /C "start cmd.exe /C [...].bat ..."
ThorstenSchöning'16

1
@ patrick-meinecke感谢您添加有关“”的评论,我为此感到沮丧。我读了你的评论,然后是啊哈。
Michael Eakins

21

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

timeout 2 >nul
exit

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

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

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

/popup实际上是给了我一个错误。删除所有内容后,一切正常
Dmitry Efimenko

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

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


3

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

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

1

我有这个,我添加了EXIT,起初它不起作用,我想每次都需要called program exiting这里另一个答复中提到的建议,但是现在它可以正常工作了-不知道是什么原因造成的,但是要注意的是我调用数据文件.html,而不是程序处理它browser.exe,我没有修改任何东西,但我只想说,它只是用一个bat文件来访问这些网页文件的主要访问页面更加简洁,只有有title.batcontents.batindex.bat在根文件夹其余内容放在子文件夹中。

即:contents.bat读取

cd subfolder
"contents.html"
exit

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


0

您可以尝试一些危险的操作: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) 

如果您要首先检查它,则可以替换为(pslist &&A)(tasklist /FI "PID eq %%A")(taskkill /PID %%A)如果已经安装了pstools)。


0

请尝试/s如下所列。

在批处理文件的最后一行中输入:

exit /s

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

/s -表示静音(它会等待来自键盘的输入)。


1
cmdexit命令没有/s开关(无论如何它都没有意义)
Stephan

-1

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

c:\ windows>退出


1
您是否读过问题的最后一句话?:I've tried adding exit to the last line of the batch file, but to no avail.
斯蒂芬

我在脚本末尾添加了退出,它实际上解决了我的问题。
阿提拉'18
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.