嘿社区我需要知道如何运行.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
答案 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代码更改虚线, 我不知道他们是否正确)
希望这最终有所帮助