2013-02-02 1 views
0

저는 배치 파일을 실행하여 Minecraft 서버를 시작합니다. 그냥 나에게 발생지정된 시간에 프로세스를 중지시키는 배치 파일 실행

@echo off 
"%ProgramFiles%\Java\jre7\bin\java.exe" -Xms1024M -Xmx1024M -jar craftbukkit-1.4.7-R1.0.jar 
pause 

그 아마도 그 배치 파일이 자동으로하지만 어떤 종류의 카운트 다운을 통해, 하루 중 특정 시간에 프로세스를 중지하는 것이 가능 : 여기에 다음과 같은 스크립트입니다.

  • 는 서버가 10 분 닫는 말

    • 이 서버 15 분 (1:45 AM)에 닫는 말 :

      은 또한, 나는 명령 프롬프트에서 다음 줄을 쓸 수 있다는 기대했다 (1:50 am)

    • 서버가 5 분 (1:55 am) 종료한다고 가정하십시오.
    • 서버가 종료 중입니다. 작별 인사. 이것이 가능하지 않다면 (오전 2시)
    • 정지 (오전 2시)

    은 어떤 추천 감상 할 수있다.

  • +1

    작업 스케줄러를 사용하십시오 ... –

    +0

    아마도 배치 파일에서이 작업을 수행하려는 경우 가능하지만 많은 단점이 있습니다. [in-game plugin] (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'와 같습니다. 나는 월요일까지는 윈도우 컴퓨터에 없을 것이다. 이 질문에 아직 답이없는 경우, 내가 생각한 것을 보여 드리겠습니다. – 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