在 Windows 的日常使用中,文件重命名似乎是一件再简单不过的小事:右键点击、选择重命名、输入新名字、回车。然而,当你面对成百上千个杂乱无章的文件比如“IMG_001.jpg, IMG_002.jpg...DSC_998.jpg”时,鼠标的机械点击不仅效率低下,更是一场对耐心的残酷考验。
其实,Windows 自带的命令提示符(CMD)中,隐藏着一套强大而优雅的文件重命名工具。不需要安装任何第三方软件,只需几行代码,就能让文件整理变得像魔法一样高效。
在 CMD 的世界里,重命名文件的指令非常直观,主要有两个:ren 和 rename。它们的功能完全一致,ren 只是 rename 的缩写版,老手们通常更偏爱简短的 ren。
基本语法:ren [原文件名] [新文件名]
示例:将 report_final.docx 改为 report_2026.docx 你只需要使用以下 CMD 命令。
ren report_final.docx report_2026.docx
注意:如果文件名中包含空格,必须用英文双引号将文件名括起来,例如 ren "my file.txt" "new file.txt"。
单个文件重命名并不稀奇,CMD 的真正威力在于批量处理。这得益于两个神奇的通配符:
星号 *:代表任意长度的任意字符。
问号 ?:代表单个任意字符。
假设你有一堆 .txt 文件需要变成 .md 格式:ren *.txt *.md,这条命令会将当前文件夹下所有 .txt 后缀的文件,保持主文件名不变,仅将后缀改为 .md。
如果你想给所有图片加上“Backup_”的前缀?你只需要使用命令:ren *.jpg Backup_*.jpg,然后系统会自动保留原来的文件名,只在前面加上指定字符。
如果你只想把文件名中的“2025”全部改成“2026”,你可以使用 ren *2025* *2026*,这会匹配所有包含“2025”的文件名,并将其替换为“2026”,其他部分保持原样。
当规则变得复杂,简单的通配符无法满足需求时(例如:提取文件名中的某几位数字作为新名字,或者按顺序编号),我们需要引入 CMD 的编程逻辑 for 循环。
假设文件夹里有 a.jpg, b.jpg, c.jpg,你想把它们变成 01.jpg, 02.jpg, 03.jpg。我们可以使用以下命令(请在 CMD 中直接输入,或在批处理文件 .bat 中使用):
setlocal enabledelayedexpansion
set count=0
for %f in (*.jpg) do (
set /a count+=1
if !count! LSS 10 (
ren "%f" "0!count!.jpg"
) else (
ren "%f" "!count!.jpg"
)
)
原理解析:
for %f in (*.jpg):遍历当前目录下所有 jpg 文件,将文件名暂存为 %f。
set /a count+=1:计数器加 1。
ren:执行重命名,利用计数器的值生成新文件名。
注:如果在批处理文件(.bat)中运行,需要将 %f 写成 %%f。
如果你想批量去掉文件名里的“(1)”, “(2)”这样的重复标记?你可以使用以下命令方式:for %f in (*(*).jpg) do ren "%f" "%f"。
等等,这好像没变? 因为 CMD 的 ren 不支持直接在参数里做字符串减法。这种情况下,通常需要借助 PowerShell 或者编写更复杂的批处理逻辑来截取字符串。但在纯 CMD 中,我们可以利用变量延迟展开来处理更复杂的逻辑,但这已经属于高阶玩法了。
如果只是想去掉括号,可以尝试通配符映射(需文件名结构非常规整):ren "*(*).jpg" "*.jpg"
注意:这种写法在某些 CMD 版本中可能不直接支持复杂的字符移除,通常用于重命名整体模式。对于复杂的字符串操作,PowerShell 是更好的搭档。
CMD 的文件重命名功能,就像一把瑞士军刀。对于简单任务,它快如闪电;对于复杂任务,配合循环逻辑,它能解决绝大多数自动化需求。
虽然现在的图形化工具和 PowerShell 更加强大,但掌握基础的 CMD 重命名技巧,不仅能让你在断网、无外设的极端环境下从容应对,更能让你在处理海量文件时,拥有一种“掌控全局”的极客快感。
下次面对堆积如山的文件时,不妨试着打开 CMD,输入那行神秘的 ren 命令,体验一下效率飞升的感觉吧!当然,如果你不习惯或觉得使用 CMD 等命令在处理重命名时比较麻烦,那么你也可以使用“简鹿文件批量重命名”这款工具,这提供了 Windows 和 Mac 版本,可以让你使用多种方式来进行文件批量重命名。