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

凑个热闹
  1. @echo off
  2. REM 开启变量延迟
  3. setlocal enabledelayedexpansion
  4. REM 构建基表
  5. set "hSTRING=零一二三四五六七八九"
  6. REM 构建0~99的汉字数字转换表
  7. for /l %%a in (0,1,9) do (
  8. for /l %%b in (0,1,9) do (
  9. if %%b equ 0 (
  10. set "____!hSTRING:~%%a,1!十=%%a0"
  11. ) else if %%a equ 0 (
  12. set "____!hSTRING:~%%b,1!=0%%b"
  13. ) else if %%a equ 1 (
  14. set "____十!hSTRING:~%%b,1!=1%%b"
  15. ) else if %%a gtr 1 (
  16. set "____!hSTRING:~%%a,1!十!hSTRING:~%%b,1!=%%a%%b"
  17. )
  18. )
  19. )
  20. REM 遍历子目录
  21. for /r %%a in (*.avi) do (
  22. REM 获取章节
  23.         for /f "tokens=1,2,3* delims=第章节" %%A in ("%%~nxa") do (
  24. REM 将章节转化为数码
  25. set "chapterNUM=!____%%A!"
  26. set "sectionNUM=!____%%C!"
  27. REM 真的纯数字直接凑齐两位
  28. if not defined chapterNUM (
  29. if "%%A"=="十" (
  30. set/a "chapterNUM=10"
  31. ) else (
  32. set/a "chapterNUM=100+%%A"
  33. )
  34. )
  35. if not defined sectionNUM (
  36. if "%%C"=="十" (
  37. set/a "sectionNUM=10"
  38. ) else (
  39. set/a "sectionNUM=100+%%C"
  40. )
  41. )
  42. echo 正在重命名...   "%%~nxa"
  43. ren "%%a" "第!chapterNUM:~-2!章%%B第!sectionNUM:~-2!节%%D"
  44.         )
  45. )
  46. REM 更名完毕
  47. pause
复制代码
2

评分人数

TOP

本帖最后由 happy886rr 于 2017-6-23 17:50 编辑

回复 7# taofan712

好说,已改。你的for内部调用call会减慢速度。不过ren本身就是外部exe,更会拖慢速度。这个批怎么写都慢速。看来还得用gawk的改造版: gawkren.exe去瞬间更名。
对了,你的代码缺少注释,至少也得标明下每块是做啥的,便于他人查阅了解思路。
打表快,以空间换时间,你需要尽量避免for中大量call,call的解释机制会重载脚本,增加读取开销。

TOP

返回列表