103

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

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

4

11 回答 11

152

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

于 2013-02-05T06:45:41.310 回答
31

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

timeout 2 >nul
exit

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

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

start "" "C:\BgInfo\BgInfo.exe" /popup
exit
于 2017-03-04T16:22:32.197 回答
7

To close the current cmd windows immediately, just add as the last command/line:

move nul 2>&0

Try move nul to nowhere and redirect the stderr to stdin will result in the current window cmd.exe being closed

This is different from closing a bat, or exiting it using goto :EOF or Exit /b

I even opened a question to find an answer that would explain behavior. Would that be a bug? Immediate closing of the current cmd window when executing: move nul 2>&0

于 2021-01-21T01:35:30.737 回答
7

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

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

于 2017-10-30T20:31:18.390 回答
2

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

taskkill /f /IM explorer.exe
C:\"GOG Games"\Starcraft\Starcraft.exe
start explorer.exe
exit /B
于 2014-12-24T22:37:47.870 回答
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) 

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

于 2014-08-26T19:58:08.727 回答
0

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

即:contents.bat 读取

cd subfolder
"contents.html"
exit

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

于 2014-07-01T12:40:18.007 回答
0

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

于 2021-02-11T02:12:18.767 回答
-1

只需尝试/s如下所列。

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

exit /s

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

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

于 2019-12-06T22:05:48.407 回答
-1

我做类似下面的事情

start ""
** code
exit

这对我有用

于 2022-01-14T23:12:55.743 回答
-2

这对我有用

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
于 2021-01-13T08:40:06.697 回答