簡體   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