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

时间:2013-02-02 08:31:26

标签: 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分钟(凌晨1点50分)关闭
  • 说服务器在5分钟内(凌晨1点55分)关闭
  • 说服务器正在关闭,再见。 (上午02时00分)
  • 停止(凌晨2:00)

如果无法做到这一点,我们将不胜感激。

1 个答案:

答案 0 :(得分:0)

这是你要找的吗?

@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