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