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