任务计划程序运行Minecraft服务器批处理文件异常及Windows开机自启替代方案咨询
任务计划程序运行Minecraft服务器批处理文件异常及Windows开机自启替代方案咨询
兄弟,我之前折腾Minecraft服务器自启的时候也碰到过和你一模一样的问题,给你捋捋原因和解决办法:
为啥任务计划程序和手动双击bat的效果不一样?
主要是这几个坑:
- 工作目录不匹配:手动双击bat的时候,系统会自动把bat所在的文件夹作为工作目录,但任务计划程序默认的工作目录可能是系统目录(比如C:\Windows\System32),这时候你的
java -jar命令找不到server.jar,启动失败就直接关窗口了。 - 权限/运行环境差异:就算你没设密码,任务计划的运行权限和你手动登录后的权限还是有区别,比如有没有读取某些文件的权限,或者是否以最高权限运行。
- 错误信息被忽略:手动双击时窗口会停着显示错误,但任务计划里如果没设置保留窗口,启动失败就直接闪退,你根本看不到为啥失败。
先试试修改bat和任务计划的设置来解决
第一步:修改你的批处理文件
把bat改成这样,先切换到服务器jar所在的目录再启动,还能留着窗口看错误:
@echo off :: 切换到Minecraft服务器所在的目录 cd /d "C:\Users\{username}\Documents\Minecraft server" :: 启动服务器 java -jar server.jar :: 如果启动失败,窗口会停住显示错误,按任意键才关闭 pause
把里面的{username}换成你自己的用户名哈。
第二步:调整任务计划程序的设置
打开任务计划,找到你的任务,右键编辑:
- 常规选项卡:勾选「使用最高权限运行」,有时候权限不够会偷偷失败。
- 操作选项卡:编辑「启动程序」的操作,在「起始于(可选)」里填上服务器文件夹的路径,比如
C:\Users\{username}\Documents\Minecraft server,这一步是强制指定工作目录,避免找不到jar。 - 条件选项卡:如果是台式机,取消勾选「只有在计算机使用交流电源时才启动此任务」,不然插电源的时候才会跑,拔了就停。
- 设置选项卡:取消勾选「如果任务运行时间超过X小时就停止」,不然服务器跑着跑着就被强制关了。
要是还是不行,试试这两个更简单的替代方案
方案一:用开机启动文件夹(最简单)
直接把你的bat文件的快捷方式拖到这个目录里:C:\Users\{username}\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
这样你开机登录后(因为你没设密码,应该是自动登录),系统就会自动运行这个bat,效果和你手动双击完全一样,几乎不会出问题。
方案二:注册成Windows服务(适合需要后台运行,不用登录也能启动)
如果你希望服务器在开机后不用登录用户也能跑,可以把它注册成Windows服务,用NSSM(一个轻量的服务管理工具)就行:
- 下载NSSM(不用安装,解压就能用),把它放到一个固定的文件夹里(比如
C:\Tools\NSSM)。 - 以管理员身份打开cmd,切换到NSSM的目录,运行:
nssm install MinecraftServer - 在弹出的设置窗口里填这些:
- 路径:找到你电脑上java.exe的路径,比如
C:\Program Files\Java\jdk1.8.0_301\bin\java.exe(根据你装的Java版本来) - 参数:
-jar "C:\Users\{username}\Documents\Minecraft server\server.jar" - 起始目录:
C:\Users\{username}\Documents\Minecraft server
- 路径:找到你电脑上java.exe的路径,比如
- 点「安装服务」,然后打开Windows服务管理器,找到「MinecraftServer」,把启动类型改成「自动」,以后开机就会自动后台运行服务器了。
备注:内容来源于stack exchange,提问作者Malachi Clifton




