如何编写Bat脚本向运行中的Minecraft服务器CMD窗口发送保存关闭命令?
批量关闭Minecraft服务器的BAT脚本方案
要实现向运行中的CMD窗口发送stop命令(触发服务器保存并关闭),需要结合VBScript的窗口控制能力——纯BAT脚本无法直接向外部窗口输入命令。以下是具体实现步骤:
步骤1:修改启动脚本(指定窗口标题)
先给每个启动的CMD窗口设置唯一标题,方便后续精准定位。将你的启动脚本修改为:
cd "C:\Users\Administrator\Desktop" start "Minecraft_HUB" Minecraft_HUB start "Minecraft_LOBBY" Minecraft_LOBBY start "Minecraft_SURVIVAL" Minecraft_SURVIVAL
注意:
start后第一个带引号的字符串就是窗口标题,确保每个服务器的标题唯一。
步骤2:编写关闭脚本
新建Stop_MC_Servers.bat脚本,内容如下:
@echo off setlocal enabledelayedexpansion :: 定义需要关闭的服务器窗口标题列表,按空格分隔新增服务器 set "server_titles=Minecraft_HUB Minecraft_LOBBY Minecraft_SURVIVAL" for %%t in (%server_titles%) do ( echo 正在发送关闭命令到 %%t... echo Set WshShell = WScript.CreateObject("WScript.Shell") > send_temp.vbs echo WshShell.AppActivate "%%t" >> send_temp.vbs echo WshShell.SendKeys "stop{ENTER}" >> send_temp.vbs cscript //nologo send_temp.vbs del send_temp.vbs ) :: 等待服务器完成保存和关闭,可根据服务器规模调整等待时间(单位:秒) echo 等待服务器关闭... timeout /t 15 /nobreak >nul echo 所有服务器已触发关闭流程
脚本说明
- 通过
AppActivate定位到指定标题的CMD窗口 SendKeys "stop{ENTER}"模拟手动输入stop命令并回车,触发Minecraft服务器保存数据后关闭timeout命令用于预留足够时间让服务器完成关闭操作,避免脚本提前结束
如果后续新增服务器,只需在server_titles列表里追加对应的窗口标题即可。
内容的提问来源于stack exchange,提问作者Felix
相关产品推荐
相关产品推荐

