【问题标题】:How to execute a command after my batch file loads a .jar如何在我的批处理文件加载 .jar 后执行命令
【发布时间】:2019-08-01 17:51:23
【问题描述】:

我有一个启动 .jarfile 的批处理文件,但在它完成加载 .jar 后,它不会执行之后运行的其他命令。

这是我的代码:

@echo off
title DWAD
color 0A
cls

:start
echo loading server...
java -Xms3G -Xmx20G -jar DWAD.jar nogui

echo "/say server will restart in 60 seconds"
TIMEOUT /T 30
echo /say server will restart in 30 seconds
TIMEOUT /T 10
echo /say server will restart in 10
TIMEOUT /T 1
echo /say 9
TIMEOUT /T 1
echo /say 8
TIMEOUT /T 1
echo /say 7
TIMEOUT /T 1
echo /say 6
TIMEOUT /T 1
echo /say 5
TIMEOUT /T 1
echo /say 4
TIMEOUT /T 1
echo /say 3
TIMEOUT /T 1
echo /say 2
TIMEOUT /T 1
echo /say 1
TIMEOUT /T 1
echo /say server restarting

.jar 加载完成后,如何指示代码运行下一个命令“echo”?

谢谢!

我在java -Xms3G -Xmx20G -jar DWAD.jar nogui 之前尝试过使用呼叫命令,但没有运气

我也尝试在java -Xms3G -Xmx20G -jar DWAD.jar nogui 之后使用 /wait 命令,但运气不佳

我期望批处理文件在加载.jar 后运行下一行代码,但结果是它没有。批处理文件在加载 .jar 后立即停止

【问题讨论】:

  • 输入“cmd /?”进入命令行,该信息可能会有所帮助
  • (这实际上可能是java的问题,在这种情况下,尝试启动另一个包含java命令的批处理文件)
  • 嗨!我会在哪里插入?一开始?
  • 啊等等,用命令 cmd /? 运行一个 .bat
  • 否,打开命令提示符,windowskey+r 输入 cmd,回车,运行 cmd /?

标签: batch-file server jar minecraft


【解决方案1】:

OP 想要编写一个 Minecraft 服务器脚本

我找到了我相信我过去曾经这样做过的插件,它位于此处:

https://www.minecraftforum.net/forums/mapping-and-modding-java-edition/minecraft-tools/1263927-win-mac-linux-minecraft-console-client

这应该允许他将文本和命令传递给服务器中的用户,同时也在操作系统上执行功能,从而允许他按照自己的意愿自动关闭服务器。

仔细检查,再次看起来像我 8 年前使用的那个,当时我有一个服务器,正如插件作者所说:

• 单个命令用法:MinecraftClient.exe 用户名密码服务器 “/我的命令”

这将自动发送“/mycommand”到服务器,然后 客户端会自动离开服务器并关闭。

用于批处理命令发送脚本。

这会将您的脚本更改为以下内容:

@(
  SETLOCAL
  ECHO OFF
  SET "_UN=ServerUserName"
  SET "_PW=ServerPassword"
  SET "_IP=ServerIP"
  title MinecraftClient
  color 0A
  cls
)

CALL :Main

(
  ENDLOCAL
  Exit /B 0
)

:Main
  ECHO.
  ECHO.  Begining Script:


  REM Letting the Users Know about the Count Down
  FOR /L %%L IN (60,-1,1) DO (
    MinecraftClient.exe %_UN% %_PW% %_IP% "/say WARNING: Server will Restart in %%L Seconds!"
    Timeout 1
  )
  ECHO.
  ECHO. Sending Final Notice and Shutting down the Server!
  MinecraftClient.exe  %_UN% %_PW% %_IP%  "/say !!! WARNING: Server GOING DOWN FOR RESTART NOW !!!"

  REM Not sure what the Restart command is offhand.
  MinecraftClient.exe  %_UN% %_PW% %_IP%  "/Restart Command"
GOTO :EOF

【讨论】:

  • 太棒了。但是,它并没有重新启动服务器 :( 我有 /say 的原因是因为我试图让它在游戏中说服务器即将重置 - 以提醒任何连接的人。
  • 有没有办法在 .jar 执行后继续执行代码?这将非常有帮助!
  • @JimothyBringus 这是作为独立进程启动 Java 后运行的脚本。我认为您希望在 Java 开始后以某种方式将完成的工作传递给 JAVA 服务器,就像您以交互方式键入一样?在这种情况下,不,这几乎肯定是不可能的,我们必须知道你在 Java 中运行的软件是什么,看看它是否有办法与它进行远程交互
  • 是的,那将是理想的哈哈。好的,所以我正在通过这个脚本运行我的世界服务器。当我隐藏 GUI 时,我留下了一个 cmd.exe,我可以在其中输入代码并让它在服务器内运行。就像我写 /say hello everyone 一样,返回的是服务器在游戏中说“hello everyone”。我想没有办法编写批处理以使其运行“好的,你已经运行了 jar 现在继续 [here]”其中 [here] 是 .jar 起始行之后的附加代码?
  • 那是服务器的交互式 Shell,如果我记得上一次像 8 年前那样运行的话,可以运行一些命令来从 CLI 向 minecraft 服务器发送消息)。但是,您也可以尝试一些事情,如果 Java 应用程序被编程为允许您执行此操作,那么它们将起作用,但本质上您可以从预命令或文件将一堆行回显到服务器,但除非 JAVA 应用程序有计时器,否则它们都会立即出现。因此,即使可行,我认为它也不会实现您的目标
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-10-06
  • 2022-11-06
  • 2018-12-25
  • 2013-07-23
  • 2011-08-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多