如何运行 .bat 文件以在运行 .jar 的第二个 .bat 文件中执行命令?

问题描述 投票:0回答:1

嘿社区,我需要知道如何运行 .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

java windows batch-file cmd
1个回答
0
投票

假设您的 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代码更改虚拟行, 我不知道他们是否正确)

希望这最终有帮助

© www.soinside.com 2019 - 2024. All rights reserved.