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

yiw*_*wei 69 cmd batch-file

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

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

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

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

Ahm*_*mad 111

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

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

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

  • +1,除非你使用双引号作为路径,你必须添加第一个参数`""`作为标题变为必需.第二个命令应该是`start"""C:\ Program Files(x86)\ Xming\Xming.exe":0 -clipboard -multiwindow`否则会尝试打开一个名为`C:\ Program Files(x86)的命令窗口\ Xming\Xming.exe`尝试使用参数`-clipboard -multiwindow`执行`:0` (23认同)
  • "如果命令是内部cmd命令或批处理文件,则命令处理器使用/ K切换到cmd.exe运行.这意味着在命令运行后窗口将保留." http://ss64.com/nt/start.html (4认同)
  • @CADbloke您可以使用`cmd.exe / C“ start cmd.exe / C [...]。bat ...”解决您提到的问题。 (2认同)

Qui*_*rks 15

使用批处理脚本打开VSCode后关闭cmd窗口

如果您有code与 VSCode 一起安装的命令:

echo | code . | exit /b
Run Code Online (Sandbox Code Playgroud)

如果您以管理员身份运行脚本:

cd /d %~dp0
echo | code . | exit /b
Run Code Online (Sandbox Code Playgroud)

使用start /b通常可以允许其他程序关闭 cmd 窗口。

  • 这正是我所需要的,之后工作得很好 (5认同)

小智 9

对于新手观看: -

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

*如果要确保文件已运行,并且在2秒后关闭DOS窗口,则可以添加以下行:

超时2> nul

出口

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

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

启动"""C:\ BgInfo\BgInfo.exe"/ popup

出口


Jen*_*eaf 6

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

cmd /c start C:\Users\Yiwei\Downloads\putty.exe -load "MathCS-labMachine1"
Run Code Online (Sandbox Code Playgroud)

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

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

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

  • “cmd /c”效果很好并解决了我的问题 (2认同)

It *_* Me 5

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

move nul 2>&0
Run Code Online (Sandbox Code Playgroud)

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

这与关闭 bat或使用goto :EOF或退出它不同Exit /b

我什至打开了一个问题来寻找可以解释行为的答案。 那会是一个错误吗?执行时立即关闭当前 cmd 窗口:move nul 2>&0