[英]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.