[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
  1. if %1 LSS 60 (
  2. endlocal & set %2=!hh!:!mm!:%1
  3. ) else (
  4. if %1 LSS 3600 (
  5. set /a mm=%1 / 60
  6. set /a ss=$1 - ^(!mm! * 60^)
  7. endlocal & set %2=!hh!:!mm!:!ss!
  8. ) else (
  9. set /a hh=%1 / 3600
  10. set /a mm=^(%1 - ^(!hh! * 3600^)^) / 60
  11. set /a ss=%1 - !hh! * 3600 - !mm! * 60
  12. endlocal & set %2=!hh!:!mm!:!ss!
  13. )
  14. )
复制代码
bat小白,请多指教!谢谢!

TOP

可以用for /f把变量带出来
  1. :Sec2Time
  2. setlocal enabledelayedexpansion
  3. set hh=0
  4. set mm=0
  5. set ss=0
  6. if %1 LSS 60 (
  7. endlocal & set %2=%hh%:%mm%:%1
  8. ) else if %1 LSS 3600 (
  9. set /a mm=%1 / 60
  10. set /a "ss=%1 - (mm * 60)"
  11. for /f "tokens=1-2" %%a in ("!mm! !ss!") do (
  12. endlocal
  13. set %2=%hh%:%%a:%%b
  14. )
  15. )
  16. goto :EOF
复制代码


也可以简单点
  1. 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 的拙作与收集的教程 提到了这点。
bat小白,请多指教!谢谢!

TOP

回复 8# hnfeng


  
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. call :Sec2Time 3668 hhmmss
  4. echo %hhmmss%
  5. pause
  6. exit /b
  7. :Sec2Time
  8. setlocal
  9. set /a hh=%1/3600+100,mm=%1/60%%60+100,ss=%1%%60+100
  10. endlocal & set %2=%hh:~-2%:%mm:~-2%:%ss:~-2%
  11. exit /b
复制代码
bat小白,请多指教!谢谢!

TOP

回复 12# hnfeng


   算除以60的余数
bat小白,请多指教!谢谢!

TOP

返回列表