【问题标题】:Need auto-restart script in batch for minecraft server我的世界服务器需要批量自动重启脚本
【发布时间】:2014-10-08 06:19:31
【问题描述】:

我目前是私人 Minecraft 服务器的管理员,但在这种情况下,技术问题超出了典型的 Minecraft 支持范围。

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

我遇到的问题是我不知道批处理是否可以在 java 服务器控制台中执行命令,发送命令以保存服务器然后退出,然后自行重启,因为只知道基本的批处理功能。

更具体地说,我希望批处理文件本身在 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

我们将不胜感激。谢谢。

【问题讨论】:

    标签: windows batch-file minecraft


    【解决方案1】:

    我使用这个,但如果你想让它自动重启,那么只需删除 :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

    【讨论】:

      【解决方案2】:

      解决方案 1: 我建议使用 Windows 任务调度程序而不是批处理文件。在那里你可以创建一个任务,安排它在上午 12 点/下午触发,然后插入你想要执行的任何 cmd 命令。然而,在不知道具体界面或如何管理我的世界服务器的情况下与服务器控制台进行交流并非易事。您可以做的就是简单地杀死服务器并使用命令行重新启动它。

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

      如果您在编写 AutoIt 脚本时需要一些帮助,我可以为您提供帮助。

      【讨论】:

      • 不是我想听到的,但无论如何感谢您的帮助。我的限制要求这一切都在服务器盒的后台运行,所以我希望有一个独立的解决方案。
      【解决方案3】:

      我在 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/) 下载

      【讨论】: