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

时间:2015-09-23 01:32:08

标签: java windows batch-file cmd

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

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

顺便说一句,这是针对Minecraft服务器的。以下是用于在批处理文件中运行.jar的代码。命令语法只是“停止”

server.bat 代码

java -Xmx1024M -Xms1024M -jar minecraft_server.jar nogui.

因此,从长远来看,我需要制作一个名为 stop.bat 的批处理文件,以便从Windows 任务计划程序运行。在 stop.bat 文件中,我需要该文件来显示 server.bat 文件中的命令,以便服务器停止,之后我就可以运行 server.bat 再次启动服务器。

有关如何做到这一点的任何想法? 基本列出了如何将所有工作都放在下面。

server-run.bat>>> “运行”>>>的Minecraft-的server.jar

任务计划程序>>> “运行”>>>的stop.bat

stop.bat>>> “执行”>>>中的命令服务器的run.bat

1 个答案:

答案 0 :(得分: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

记住这只是直接从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代码更改虚线, 我不知道他们是否正确)

希望这最终有所帮助