2个方法:
【方法1】分秒前加1变成三位数,秒减1,如果小于100则秒加60分减1,如果分小于100则分加60时减1
@ echo off
:loop
cls
echo %time%
set /a ss=1%time:~6,2%-1,mm=1%time:~3,2%,hh=%time:~0,2%
if %ss% lss 100 set /a mm=mm-1,ss+=60
if %mm% lss 100 set /a hh=hh-1,mm+=60
set mm=%mm:~-2%
set ss=%ss:~-2%
echo %hh%:%mm%:%ss%
ping 127.1 -n 1>nul
goto :loop
【方法2】将时间换算成当天的秒数,减1,再换算成时间
@ echo off
:loop
cls
echo %time%
set /a time1=%time:~0,2%*3600+(1%time:~3,2%-100)*60+(1%time:~6,2%-100)-1
set /a hh=time1/3600,mm=time1/60%%60+100,ss=time1%%60+100
set mm=%mm:~-2%
set ss=%ss:~-2%
echo %hh%:%mm%:%ss%
ping 127.1 -n 1>nul
goto :loop
【补充】方法1直接计算容易理解。方法2方便计算更大的时间差。这两种方法都会遇到分和秒是08的情况,会导致计算错误,所以将分和秒前面加个1变成108,计算之后再取后两位字符即可。这两种方法都没有做跨天的计算,可以补充。
【方法1】分秒前加1变成三位数,秒减1,如果小于100则秒加60分减1,如果分小于100则分加60时减1
@ echo off
:loop
cls
echo %time%
set /a ss=1%time:~6,2%-1,mm=1%time:~3,2%,hh=%time:~0,2%
if %ss% lss 100 set /a mm=mm-1,ss+=60
if %mm% lss 100 set /a hh=hh-1,mm+=60
set mm=%mm:~-2%
set ss=%ss:~-2%
echo %hh%:%mm%:%ss%
ping 127.1 -n 1>nul
goto :loop
【方法2】将时间换算成当天的秒数,减1,再换算成时间
@ echo off
:loop
cls
echo %time%
set /a time1=%time:~0,2%*3600+(1%time:~3,2%-100)*60+(1%time:~6,2%-100)-1
set /a hh=time1/3600,mm=time1/60%%60+100,ss=time1%%60+100
set mm=%mm:~-2%
set ss=%ss:~-2%
echo %hh%:%mm%:%ss%
ping 127.1 -n 1>nul
goto :loop
【补充】方法1直接计算容易理解。方法2方便计算更大的时间差。这两种方法都会遇到分和秒是08的情况,会导致计算错误,所以将分和秒前面加个1变成108,计算之后再取后两位字符即可。这两种方法都没有做跨天的计算,可以补充。