返回列表 发帖
本帖最后由 aloha20200628 于 2024-12-25 21:52 编辑

回复 1# FU586097
@echo off &setlocal enabledelayedexpansion
for %%a in (
   "a (1)=北京"
   "a (2)=上海"
   "a (3)=天津"
   "a (4)=广州"
   "a (5)=海南" ) do set %%a
for /f "delims=" %%F in ('dir /b/a-d "a*).docx" ') do if "!%%~nF!" neq "" ren "%%F" "!%%~nF!%%~xF%"
pause&exit/bCOPY

TOP

本帖最后由 aloha20200628 于 2024-12-25 20:51 编辑

回复 3# FU586097

请检查真实文件名格式与代码中的字面量如 "a (1)" 是否完全一致?真有空格?是英文括号还是中文括号?
再用 chcp 命令检查当前系统码页是 936 还是 65001 ?

TOP

回复 5# FU586097

命令行直接键入 chcp 回车,看其返回值是 936 还是 65001

TOP

回复 7# FU586097

2楼代码假定被处理的文件名格式如 "a (n).txt" ,其中 n=1,2,... 其扩展名 .txt 任意,要求相应改为 北京.txt, 上海.txt, ... 再请楼主确认是否如此?

TOP

本帖最后由 aloha20200628 于 2024-12-25 22:01 编辑

回复 9# FU586097

模拟了经楼主确认的一楼示例样本,用2楼代码测试已通过》当前文件夹下的 a (n).docx 共5个文件依据其对应序号 n 被更名为 北京.docx, 上海.docx, ...

TOP

回复 11# FU586097

2楼代码用记事本(ansi 编码)存为 test.bat 运行,与被处理的 *.docx 源文件同目录...

TOP

回复 14# FU586097

系统是win7 ? win8 ? win10 ? win11 ?

TOP

回复 16# FU586097
参见其中 ‘如何上传’ http://www.bathome.net/redirect. ... o=lastpost#lastpost

TOP

回复 18# FU586097

文件夹中要处理的 *.docx 文件用 dir /b a*.docx 作个列表结果,粘贴出来一看便知了...
1

评分人数

TOP

回复 22# FU586097

若用一比一的固定代码写,改为如下即可
ren "A (1).docx" "北京.docx"
ren "A (2).docx" "上海.docx"
ren "A (3).docx" "天津.docx"
ren "A (4).docx" "广州.docx"
ren "A (5).docx" "海南.docx"COPY
1

评分人数

TOP

回复 26# FU586097

【仅供参考】与楼主爬楼20+层,从代码原版中 ‘更名字典的内存定义’ 到最后的 ‘一比一直接更名’... 总结之,还是把一行流代码与更名字典混编一体(存为 test.bat 运行一气呵成)更为简洁高效,看以下代码...
@echo off &(for /f "delims=" %%a in ('more +2 "%~f0" ') do (ren %%a)) 2>nul &exit/b
::以下是更名字典
"a (1).*" "北京.*"
"a (2).*" "上海.*"
"a (3).*" "天津.*"
"a (4).*" "广州.*"
"a (5).*" "海南.*"COPY

TOP

返回列表