嘿社区,我需要知道如何运行 .bat 文件将文本字符串保存到运行 .jar 的 .bat 文件中以使用该命令。
运行其他批处理文件中的命令的批处理文件也将从 Windows 任务计划程序运行。
顺便说一句,这是针对 Minecraft 服务器的。无论如何,下面是用于运行批处理文件中的 .jar 的代码。命令语法只是“停止”。
服务器.bat代码
java -Xmx1024M -Xms1024M -jar minecraft_server.jar nogui.
因此,从长远来看,我需要制作一个名为 stop.bat 的批处理文件,以便从 Windows Task Scheduler 运行。在 stop.bat 文件中,我需要该文件来执行 server.bat 文件中的命令,以便服务器停止,之后我可以运行 server.bat 再次启动服务器。
关于如何做到这一点有什么想法吗? 下面是这一切应该如何工作的基本布局。
server-run.bat>>>“运行”>>>minecraft-server.jar
任务计划程序>>>“运行”>>> stop.bat
stop.bat >>> “执行命令” >>> server-run.bat
假设您的 server-run.bat 文件如下所示:
@echo off
:startserver
java -Xmx1024M -Xms1024M -jar minecraft_server.jar nogui.
:running
pause
REM or whatever you do normally to stop the server
:stopserver
java stop
REM or whatever the command to stop the server is
exit
为了使文件能够跳转到调用批处理文件定义的某个标记,您应该将其更改为:
@echo off
if "%*" NEQ "" goto %*
:startserver
java -Xmx1024M -Xms1024M -jar minecraft_server.jar nogui.
:running
pause
REM or whatever you do normally to stop the server
:stopserver
java stop
REM or whatever the command to stop the server is
exit
stop.bat 应该看起来大约像这样:
@echo off
start server-run.bat stopserver
记住^ber,这只是直接从 stop.bat 运行服务器停止命令的另一种方法。如果这不起作用(因为它需要环境变量或其他东西),这种方法也会失败!
(这是因为您无法直接干扰正在运行的批处理文件或其变量,您只能同时运行它的副本)
如果您想干扰正在运行的批处理文件,最简单的方法是定期检查文件是否存在:
@echo off
:startserver
if exists stopfile.txt del stopfile.txt
java -Xmx1024M -Xms1024M -jar minecraft_server.jar nogui.
:running
if exists stopfile.txt goto stopserver
timeout /T 2
goto running
:stopserver
del stopfile.txt
java stop
REM or whatever the commabd to stop the server is
goto :EOF
exit
stop.bat 就是这样做的:
@echo off
echo.something >stopfile.txt
exit
这将导致 server-running.bat
-运行服务器
-每 2 秒检查一次是否出现 stopfile.txt
-如果确实如此,请停止服务器
(记得用java代码更改虚拟行, 我不知道他们是否正确)
希望这最终有帮助