2014-07-11 81 views
-3

如何让我的命令/批处理文件显示更好的时间表?服务器重新启动器时间轴,秒钟时间

@echo off 
       title Server Restarter 
     :start 
       set time=18000 
       start (exefile).exe 
     :loop 
       cls 
       IF %time% GTR 0 (
       set /a time=%time% - 1 
       set /a min=%time%/5 
       set /a hrs=%time%/10 
       echo (servername) will Restart In %time% Seconds. 
       echo (servername) will Restart in %time% Seconds, %min% Minutes, %hrs% Hours. 
       ping 127.0.0.1 -n 2 > NUL 
       goto loop 
      ) 
     taskkill /f /im (exefile).exe 
     cls 
    close server 
    goto start 

有没有一种方法,使代码显示这个样子,

分钟0-59秒0-59小时0-24天0-(数量)

等?我尝试了很多东西,但无法获得正确显示的时间。

回答

0

您的计算有点太简单了。

@echo off 
set tim=180000 

:loop 
cls 
IF %tim% leq 0 goto done 
set /a day=%tim%/86400 
set /a hrs=(%tim%-day*86400)/3600 
set /a min=(%tim%-day*86400-%hrs%*3600)/60 
set /a sec=%tim%-day*86400-%hrs%*3600-%min%*60 
echo servername will Restart In %tim% Seconds. 
echo servername will Restart in %day% days, %hrs% hours, %min% Minutes and %sec% seconds. 
ping 127.0.0.1 -n 2 > NUL 
set /a tim-=1 
goto loop 

:done 
echo done. 

你的主要问题是,您的代码使用变量块(内()),这样你就需要推迟扩张。你可以通过巧妙的使用条件来避免它。

顺便说一句:我使用%tim%而不是%time%,因为%time%是一个系统变量 - 糟糕的主意弄糟他们 - 即使它工作。

+0

哦好吧,谢谢你这么多斯蒂芬。 – GrimmRP

相关问题