需要批量为Minecraft服务器自动重启脚本

时间:2014-10-08 06:19:32

标签: windows batch-file minecraft

我目前是私有Minecraft服务器的管理员,但在这种情况下,技术问题不在典型的Minecraft服务范围之内。

我希望在上午12点和下午12点重启启动服务器的批处理文件,虽然我没有批处理经验,粗略的谷歌搜索没有任何帮助。

我遇到的问题是我不知道批处理CAN是否在java服务器控制台中执行命令,发送命令以保存服务器然后退出,并重新启动自己,因为只知道基本的批处理函数。 / p>

更具体地说,我希望批处理文件本身在43200秒之后或在每个12秒上在服务器窗口中运行命令,然后重新启动。我不知道如何让批处理文件在服务器命令行中运行命令,或者如果它甚至可能。

当前批次代码如下:

@echo off
:Minecraft
echo (%time%) Minecraft started.
java -Xms2048m -Xmx2048m -XX:PermSize=128m -jar FTBServer-1.6.4-965.jar nogui
pause
echo (%time%) WARNING: Minecraft closed or crashed, restarting.
ping 1.1.1.1 -n 1 -w 3000 >nul
goto Minecraft

任何帮助都会受到重视。感谢。

3 个答案:

答案 0 :(得分:2)

我使用它但是如果你想让它自动重启它,那么只需删除:choise部分并从开始到重新启动循环



@echo off
title minecraft-server-1.8.3
color 0A
prompt [server]:
cls

:start
echo loading server...
java -Xms3G -Xmx3G -jar minecraft_server.1.8.3.jar nogui
cls

:choice
set /P a=do you want to restart[Y/N]?
if /I "%a%" EQU "Y" goto :restart
if /I "%a%" EQU "N" goto :stop
goto :choice


:restart
cls
echo server will restart
TIMEOUT /T 5
cls
goto :start

:stop

cls
echo closing server
TIMEOUT /T 5
exit




PS。将minecraft_server.1.8.3.jar替换为您的服务器文件名称

答案 1 :(得分:1)

解决方案1: 我建议使用Windows任务调度程序而不是批处理文件。在那里,您可以创建一个任务,安排它在上午12点/下午触发,并插入您想要执行的任何cmd命令。但是,在不知道特定接口或如何管理Minecraft服务器的情况下与服务器控制台进行通信是非常重要的。你可以做的就是杀死服务器并使用命令行重新启动它。

解决方案2: 如果您不喜欢此解决方案并且不知道如何与服务器控制台通信,则可以尝试以下操作: 看看AutoIt(https://www.autoitscript.com/site/)。它是一种非常简单的脚本语言,也可以模拟键盘的点击和输入。因此,您可以编写一个脚本,将焦点设置到服务器控制台,并键入所需的命令以重新启动服务器。可以将此AutoIt脚本编译为exe文件,也可以将其作为au3脚本运行。 您仍应使用任务计划程序在上午12点/下午运行您的exe /脚本。

如果您需要一些帮助来编写AutoIt脚本,我可以帮助您。

答案 2 :(得分:0)

我为AutoIt中的朋友写了一个类似的程序,这里的脚本我评论了你需要配置的行:

HotKeySet("{ESC}", end)
HotKeySet("{F1}", start) ;optional
HotKeySet("{F2}", pause) ;optional

pause() ; starts the pause loop when started

; restarts the server all 12 hours
Func start()
    $Path = "PathToYourBatch.bat" ; self explained

    While 1
        If @HOUR =  00 Or @HOUR = 12 Then ;starts the server at 00 and 12 
            Run($Path)
        EndIf
    WEnd
EndFunc

Func pause()
    While 1
        Sleep(500) ; waits 500 ms to reduce lag
    WEnd
EndFunc

Func end()
    Exit
EndFunc

您不需要使用热键,但您可以使用它们轻松控制程序(远程桌面)

您可以使用在线编译器(http://www.script-example.com/themen/AutoIT-Online-Compiler.php)或从(https://www.autoitscript.com/site/下载)希望如果有任何关于代码的问题,我可以提供帮助。