可以用for /f把变量带出来- :Sec2Time
- setlocal enabledelayedexpansion
- set hh=0
- set mm=0
- set ss=0
- if %1 LSS 60 (
- endlocal & set %2=%hh%:%mm%:%1
- ) else if %1 LSS 3600 (
- set /a mm=%1 / 60
- set /a "ss=%1 - (mm * 60)"
- for /f "tokens=1-2" %%a in ("!mm! !ss!") do (
- endlocal
- set %2=%hh%:%%a:%%b
- )
- )
- goto :EOF
复制代码
也可以简单点
- set /a hh=%1/3600,mm=%1/60%%60,ss=%1%%60
复制代码
set /a 自带变量延迟扩展特性,不需要用!!包裹变量,这里如果将两个set /a 写成一行,set /a mm=%1/60,ss=%1-(!mm!*60),容易出错。crlf大佬的教程 [分享]Crlf 的拙作与收集的教程 提到了这点。 |