Batch file 运行在指定时间停止进程的批处理文件

Batch file 运行在指定时间停止进程的批处理文件,batch-file,minecraft,Batch File,Minecraft,我正在运行一个批处理文件来启动Minecraft服务器。以下是脚本: @echo off "%ProgramFiles%\Java\jre7\bin\java.exe" -Xms1024M -Xmx1024M -jar craftbukkit-1.4.7-R1.0.jar pause 我刚刚想到,批处理文件可能会在一天中的指定时间自动停止进程,但不会通过任何形式的倒计时 此外,我还希望它可以在命令提示符中写入以下行: 假设服务器在15分钟后关闭(凌晨1:45) 假设服务器在10分钟后关闭(凌

我正在运行一个批处理文件来启动Minecraft服务器。以下是脚本:

@echo off
"%ProgramFiles%\Java\jre7\bin\java.exe" -Xms1024M -Xmx1024M -jar craftbukkit-1.4.7-R1.0.jar
pause
我刚刚想到,批处理文件可能会在一天中的指定时间自动停止进程,但不会通过任何形式的倒计时

此外,我还希望它可以在命令提示符中写入以下行:

  • 假设服务器在15分钟后关闭(凌晨1:45)
  • 假设服务器在10分钟后关闭(凌晨1:50)
  • 假设服务器在5分钟后关闭(凌晨1:55)
  • 说服务器正在关闭,再见。(凌晨2时)
  • 停车(凌晨2时)

如果这是不可能的,任何建议都将不胜感激。

这就是你想要的吗

@echo off
setlocal enabledelayedexpansion
cmd /c "%ProgramFiles%\Java\jre7\bin\java.exe" -Xms1024M -Xmx1024M -jar craftbukkit-1.4.7-R1.0.jar

:waitloop
for /f "tokens=1-3 delims=:." %%I in ("%time%") do (
    if "%%I"==" 1" (
        if "%%J"=="45" (
            echo ! Server is closing in 15 minutes.
        ) else if "%%J"=="50" (
            echo ! Server is closing in 10 minutes.
        ) else if "%%J"=="55" (
            echo ! Server is closing in 5 minutes.
        )
    ) else if "%%I"==" 2" (
        echo ! Toodloo.
        wmic process where name="java.exe" delete >NUL 2>NUL
        goto :EOF
    )
    set /a secs=60 - %%K + 1
    ping 127.0.0.1 -n !secs! >NUL
)
goto waitloop

使用任务调度器…这可能是可能的,但如果您真的想从批处理文件执行此操作,则有很多缺点。使用A是最好的解决方案。否则,自动热键或Powershell将更容易。您所要求的是可能的。只需在ping/goto循环中检查时间。在01时45分、01时50分和01时55分发出回声警告。然后在02:00使用wmic杀死Java.exe,类似于
wmic process where name=“Java.exe”delete
。我要到星期一才能在Windows电脑前工作。如果这个问题到那时还没有答案,我会告诉你我的想法。