繁体   English   中英

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

[英]How do I run a .bat file for commands to execute in a second .bat file running a .jar?

嘿社区我需要知道如何运行 .bat 文件以将文本字符串发送到运行 .jar 的 .bat 文件以使用该命令。

另一个批处理文件中运行命令的批处理文件也将从 Windows 任务计划程序运行。

顺便说一句,这是用于 Minecraft 服务器的。 无论如何,下面是用于在批处理文件中运行 .jar 的代码。 命令语法只是"stop"


server.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

请记住,这只是直接从 stop.bat 运行 server-stop-command 的另一种方式。 如果这不起作用(因为它需要一个环境变量或其他东西)这种方法也会失败!

(这是因为您不能直接干扰正在运行的批处理文件或其变量,您只能同时运行它的副本)

如果您想干扰正在运行的批处理文件,最简单的方法是定期检查文件是否存在:

@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

- 运行服务器

- 如果 stopfile.txt 出现,每 2 秒检查一次

- 如果是,停止服务器

(记得用java代码更改虚拟行,我不知道它们是否正确)

希望这最终有所帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM