Windows环境下利用CMD命令批量修改文件名
Windows环境下利用CMD命令批量修改文件名
近期由于项目审核,需要对大量项目工程文档重新命名;起初我打算找一些支持文件批量操作的小工具,但转念一想,既然Linux有强大的文件目录操作命令,CMD应该也不输一筹,至少操作文件应该是绰绰有余的;简短查阅了几篇博客之后发现还是挺简单的,工具方面只需要用到Excel和一款支持通配符匹配查询的文本编辑器,这里推荐使用UltraEdit
核心命令
- 文件重命名
ren
- ren即rename的缩写,使用ren或者rename命令均可实现文件重命名的操作;命令的使用方法很简单,格式为
ren old_name new_name
;例如,想要将D盘根目录下的文件a.txt
重命名为b.doc
,只需要在CMD中进入D盘根目录,执行ren a.txt b.doc
;或者使用绝对路径,执行ren D:\a.txt b.doc
,也可以达到同样的效果 - 需要注意的是,旧文件名
old_name
可以使用相对路径,也可以包含绝对路径,但新文件名new_name
不能包含任何文件路径,只能是纯文件名;所以,要想批量修改包含子文件夹的多个路径下的大量文件名,还需要用到一款支持通配符匹配查询替换的文本编辑器,以便从路径+文件名的文件目录系统中提取出文件名的部分 - 另外,
ren
也支持使用通配符;例如,想要将扩展名为.docx
的文件扩展名批量修改为.doc
,执行ren *.docx *.doc
即可;但通配符的使用规则十分复杂,若无法完全理解其中的匹配规则,建议只使用通配符来修改文件扩展名
- ren即rename的缩写,使用ren或者rename命令均可实现文件重命名的操作;命令的使用方法很简单,格式为
-
显示文件系统目录信息
dir
-
dir
命令可以列出指定路径下的所有文件和目录列表,其功能类似于Linux下的ls
命令;dir
的参数众多,但都可以省略,这里不一一列举,只列出几个本文中将会用到的参数,如下所示:参数 功能 [path] 指定文件目录的路径 /a 筛选文件目录属性 /b 不显示详细信息 /s 显示所有子目录 -
值得一提的是,
dir /a
参数不仅可以列出文件列表信息,同时也会列出文件夹列表,而ren
命令对文件夹也同样适用;若要尽量避免可能的误操作对文件夹名称造成改变,可以使用dir /a-d
参数,效果为列出非文件夹的文件目录;类似的,使用dir /ad
参数则可以只列出文件夹目录;参数dir /a
支持的部分属性如下:参数 功能 d 文件夹 r 只读 h 隐藏 s 系统 - 取反 如表格所示,执行
dir D:\test /b/s/a-d
即可在CMD中打印出D盘test文件夹下的所有子文件夹所包含的文件目录列表;而若要将这个列表保存至文本文档中,只需在命令后面指定输出文档的路径:dir D:\test /b/s/a-d>D:\file.txt
;如果要存放输出列表的文档D:\file.txt
不存在,该文件会由命令自动创建;而如果文档D:\file.txt
已经存在,使用>
操作符将覆盖原文档内容;若要保留原文档内容,可以使用>>
操作符,输出列表将从原文档内容的末尾开始写入
-
操作过程演示(以下文档均为演示文档)
- 导出项目工程文档目录并存入Excel工作表的第一列:
-
dir D:\test /b/s/a-d>D:\file.txt
- 用UltraEdit提取文件名:
- 使用通配符
^(*^)\
匹配文件标题的路径部分,多次替换剥离出文件名 - 将修改后的文件名目录列表存入Excel工作表的第二列:
- 这里用到了UltraEdit强大的列编辑功能,使用快捷键
Alt+C
开启列编辑模式 - 用Excel公式拼接操作命令语句:
- 在表格第三列输入公式
="ren "&A1&" "&B1
,注意公式包含空格 - 将操作命令语句另存为批处理文件并执行:
- 将表格第三列编辑好的公式存入文本文档,保存为
.bat
批处理文件,执行即可
最终效果演示: