首页 文章

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

提问于
浏览
1

嘿社区我需要知道如何运行.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中执行命令

1 回答

  • 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代码更改虚线,我不知道它们是否正确)

    希望这有助于最终

相关问题