[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
本帖最后由 aloha20200628 于 2024-3-5 18:20 编辑

回复 8# hnfeng

一楼的代码除了明显的几个错误如 ENABLEEXTENSIONS,$1,...已被指出外,真正致命的是如下两个错误》
一。在用括号包裹的if语块内,set/a 句式若含括号,须用双引号包裹,例如 set/a "v=5-(100/2)";
二。局部变量续命给全局变量的句式 endlocal & set %2=!v! 字面量应为 endlocal & set %2=%v% 但更关键的是该句式不能在复合语块(如if或for)内使用(建议用法见订正代码)
如下代码是订正后的示例代码(主要针对子过程部分),已测试通过
  1. @echo off
  2. call :Sec2Time 13668 hhmmss
  3. echo 13668 %hhmmss%
  4. exit /b
  5. :Sec2Time
  6. setlocal enabledelayedexpansion
  7. set hh=0
  8. set mm=0
  9. set ss=0
  10. if %1 LSS 60 (
  11. set v=!hh!:!mm!:%1
  12. ) else (
  13. if %1 LSS 3600 (
  14. set /a mm=%1/60
  15. set /a ss=%1-!mm!*60
  16. set v=!hh!:!mm!:!ss!
  17. ) else (
  18.   set /a hh = %1 / 3600
  19.   REM 关键点之一如下
  20.   set /a "mm=(%1-!hh!*3600)/60"
  21.   set /a ss=%1-!hh!*3600-!mm!*60
  22.   set v=!hh!:!mm!:!ss!
  23.   )
  24. )
  25. REM 关键点之二如下
  26. endlocal & set %2=%v%
  27. exit/b
复制代码

TOP

返回列表