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


本帖也许可以进一步简化》
假设楼主规定的前缀命名结构式如 【科目+年级+学期+...】,
据此构建一个提取词链表,和一个替换词链表(其中源词与替换词用/分割),两个链表中各项的顺序须满足命名结构式的顺序。
用上述方法或规则,楼主可以自己增减两个链表中的项目,但要确保其顺序和命名结构式中的顺序一致。
代码如下存为test.bat
当前版是测试检查版,用来检查更名结果是否正确;删除第14行再将原15行开头的REM删除即成真实更名版。
  1. @echo off &setlocal enabledelayedexpansion
  2. ::构建提取词链表
  3. set "提取词=语文 数学 物理 化学 历史 政治 生物 地理 英语 道法"
  4. ::构建替换词链表
  5. set "替换词=一年/1 二年/2 三年/3 四年/4 五年/5 六年/6 七年/7 八年/8 九年/9 上学期/A 下学期/B ^
  6. 一上/1A 二上/2A 三上/3A 四上/4A 五上/5A 六上/6A 七上/7A 八上/8A 九上/9A ^
  7. 一下/1B 二下/2B 三下/3B 四下/4B 五下/5B 六下/6B 七下/7B 八下/8B 九下/9B"
  8. set "day=【%date:*-=%】"
  9. for /f "delims=" %%F in ('dir /b/s/a-d *.pdf *.doc*') do (
  10. set "nF=%%~nF" &set "new=【"
  11. for %%w in (!提取词! !替换词!) do for /f "tokens=1-2 delims=/" %%1 in ("%%~w") do (
  12. if "!nF:%%1=!" neq "!nF!" (if "%%2"=="" (set "new=!new!%%1") else (set "new=!new!%%2"))
  13. )
  14. echo,"!new!】!day!%%~nxF"
  15. REM ren "%%~F" "!new!】!day!%%~nxF"
  16. )
  17. endlocal &pause &exit/b
复制代码

TOP

回复 9# qd2024

看到楼主调整了命名结构式,其实可以分拆提取词链表为多个即可,修正代码如下
  1. @echo off &setlocal enabledelayedexpansion
  2. ::构建前置提取词链表
  3. set "提取词1=语文 数学 物理 化学 历史 政治 生物 地理 英语 道法"
  4. ::构建替换词链表
  5. set "替换词=一年/1 二年/2 三年/3 四年/4 五年/5 六年/6 七年/7 八年/8 九年/9 上学期/A 下学期/B ^
  6. 一上/1A 二上/2A 三上/3A 四上/4A 五上/5A 六上/6A 七上/7A 八上/8A 九上/9A ^
  7. 一下/1B 二下/2B 三下/3B 四下/4B 五下/5B 六下/6B 七下/7B 八下/8B 九下/9B"
  8. ::构建后置提取词链表
  9. set "提取词2=一模 二模 三模 中考"
  10. set "day=【%date:*-=%】"
  11. for /f "delims=" %%F in ('dir /b/s/a-d *.pdf *.doc*') do (
  12. set "nF=%%~nF" &set "new=【"
  13. for %%w in (!提取词1! !替换词! !提取词2!) do for /f "tokens=1-2 delims=/" %%1 in ("%%~w") do (
  14. if "!nF:%%1=!" neq "!nF!" (if "%%2"=="" (set "new=!new!%%1") else (set "new=!new!%%2"))
  15. )
  16. echo,"!new!】!day!%%~nxF"
  17. REM ren "%%~F" "!new!】!day!%%~nxF"
  18. )
  19. endlocal &pause &exit/b
复制代码

TOP


替换词链表用续行连接符^有问题,故须订正代码如下
  1. @echo off &setlocal enabledelayedexpansion
  2. ::构建前置提取词链表
  3. set "提取词1=语文 数学 物理 化学 历史 政治 生物 地理 英语 道法"
  4. ::构建替换词链表
  5. set "替换词=一年/1 二年/2 三年/3 四年/4 五年/5 六年/6 七年/7 八年/8 九年/9 上学期/A 下学期/B 一上/1A 二上/2A 三上/3A 四上/4A 五上/5A 六上/6A 七上/7A 八上/8A 九上/9A 一下/1B 二下/2B 三下/3B 四下/4B 五下/5B 六下/6B 七下/7B 八下/8B 九下/9B"
  6. ::构建后置提取词链表
  7. set "提取词2=一模 二模 三模 中考 高考"
  8. set "day=【%date:*-=%】"
  9. for /f "delims=" %%F in ('dir /b/s/a-d *.pdf *.doc*') do (
  10. set "nF=%%~nF" &set "new=【"
  11. for %%w in (!提取词1! !替换词! !提取词2!) do for /f "tokens=1-2 delims=/" %%1 in ("%%~w") do (
  12. if "!nF:%%1=!" neq "!nF!" (if "%%2"=="" (set "new=!new!%%1") else (set "new=!new!%%2"))
  13. )
  14. echo,"!new!】!day!%%~nxF"
  15. REM ren "%%~F" "!new!】!day!%%~nxF"
  16. )
  17. endlocal &pause &exit/b
复制代码
1

评分人数

TOP

返回列表