Batch file 尝试每3小时自动重新启动minecraft服务器

Batch file 尝试每3小时自动重新启动minecraft服务器,batch-file,minecraft,Batch File,Minecraft,我在这篇文章中使用了最佳答案中提供的代码: 但是,我不确定choice函数应该在什么时候运行 此外,我宁愿别无选择。我希望服务器只需提前60秒重启,然后执行重启 任何帮助都将不胜感激 以下是上一个答案中的代码: @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

我在这篇文章中使用了最佳答案中提供的代码:

但是,我不确定choice函数应该在什么时候运行

此外,我宁愿别无选择。我希望服务器只需提前60秒重启,然后执行重启

任何帮助都将不胜感激

以下是上一个答案中的代码:

@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
欢迎来到堆栈溢出。 正如@Mofi在评论中提到的,您可以使用TIMEOUT来创建wait语句 您可能需要的脚本如下所示:

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

REM I recommend NOT using TIMEOUT /T for the main wait, this way you can skip it and initiate a restart immediately 

TIMEOUT 10720

REM 3 hours minus 60 seconds to allow for 60 second restart notification

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


(因为您似乎对批处理有些陌生,所以REM用于注释掉行)

要回答您关于“为什么:选择”部分是一件事的问题:
它在:start部分之后启动,允许您(Y)重新启动或(N)停止服务器

命令行
java-Xms3G-Xmx3G-jar minecraft_server.1.8.3.jar nogui
启动
java.exe
执行minecraft服务器,并停止
cmd.exe
对批处理文件的处理,直到
java.exe
的此实例自行终止,即,出于任何原因退出Minecraft服务器的执行。然后,如果Minecraft服务器应该再次启动,则会提示用户使用
set/P
(最好使用命令
choice
)。这很清楚如果你不想选择,通过
TIMEOUT/t60
goto:start
将命令行后
cls
的所有内容替换为
java
,使一个无休止运行的批处理文件在Minecraft服务器停止后始终等待60秒,然后再次启动。明白了-如果我想通知用户,“回声”会在游戏中传递这些信息吗。或者我需要写一行“echo/说服务器将重新启动”吗?我了解到/say将在游戏中传递信息。
:启动echo加载服务器。。。java-Xms3G-Xmx20G-jar DWAD.jar nogui cls TIMEOUT/T 60 cls echo服务器将在60秒内重新启动超时/T 30 echo服务器将在30秒内重新启动超时/T 10 echo服务器将在10秒内重新启动超时/T 1 cls echo 9超时/T 1 cls echo 8超时/T 1 cls echo 7超时/T 1 cls echo 6超时/T 1 cls echo 5超时/T 1 cls echo 4超时/T 1 cls echo 3超时/T 1 cls echo 2超时/T 1 cls echo 1超时/T 1 cls echo服务器重新启动cls goto:start
我运行了上面的测试代码,但不幸的是,我没有得到任何结果!还有,抱歉-我试着在我的评论中留出适当的代码格式,但没有起作用:/游戏中提到的所有命令都将通过控制台(启动服务器后打开的命令提示窗口。jar)完成。你可以使用VBscript和autohotkey来聚焦该窗口。批处理文件-->启动/重新启动服务器如果批处理文件要求重新启动-->启动自动热键脚本和控制台的焦点窗口(您也可以只使用VBscript,但AHK更易于学习),请使用AHK键入命令“比如说重新启动前60秒”