2013-02-02 78 views
0

我正在运行批处理文件来启动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 am)
  • 说服务器在5分钟内关闭(凌晨1:55)
  • 说服务器正在关闭,再见。 (凌晨2:00)
  • 停止(凌晨2:00)

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

+1

使用任务调度程序... –

+0

这可能是可能的,但如果您真的想从批处理文件中执行此操作有很多缺点。使用[游戏中的插件](http://dev.bukkit.org/server-mods/auto-shutdown/)是最好的解决方案。否则AutoHotkey或Powershell会更容易。 – wimh

+0

你问的是可能的。只需在时间上检查一下ping/goto即可。 01:45,01:50和01:55会回复警告。然后在02:00使用wmic杀死Java.exe,类似于'wmic process where name =“java.exe”delete'。星期一之前我不会在Windows电脑上工作。如果这个问题仍然没有回答,我会告诉你我的想法。 – rojo

回答

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 
相关问题