我用 cmd 批量改文件后缀名翻车了,原来 PowerShell 和它语法不一样!
标签:Windows CMD 批量修改后缀名、PowerShell 改扩展名、文件重命名脚本
我一直以为改文件后缀这种事,在 Windows 上只要一个 for
循环就能搞定,直到那天我在 PowerShell 里贴了个 CMD 命令,结果直接报错给我看……
这才发现,原来 CMD 和 PowerShell 根本不是一个语法体系!
现在就把我实际踩坑后的解决方案写下来,一次性搞定 Windows 批量修改文件后缀名,以后再也不怕手动改一堆 .txt
了。
🧩 场景复现:把所有 txt 文件改成 md 文件
假设当前目录下有这些文件:
说明.txt
待办.txt
日记.txt
我们要把这些改成:
说明.md
待办.md
日记.md
✅ 方法一:用 CMD 改后缀,简单暴力
操作步骤:
- 按
Win + R
输入cmd
回车; - 进入你要操作的文件夹;
- 输入以下命令:
for %f in (*.txt) do ren "%f" "%~nf.md"
效果展示:
执行完之后,所有 .txt
文件都会变成 .md
,文件名保持不变。
🔒 注意:
如果你想把这条命令写到 .bat
脚本里,就需要双写百分号:
for %%f in (*.txt) do ren "%%f" "%%~nf.md"
⚠️ 有人遇到这个错误?
当你在 PowerShell 粘贴 for %f in (*.txt)
时,很可能会遇到:
关键字“for”后面缺少左“(”。
没错,这就是语法不兼容导致的。
✅ 方法二:PowerShell 改后缀,更现代更优雅
如果你用的是 PowerShell(右键目录 -> 在此处打开 PowerShell),那么正确的命令是:
Get-ChildItem -Filter *.txt | Rename-Item -NewName { $_.BaseName + ".md" }
解释下语法:
Get-ChildItem -Filter *.txt
:获取所有.txt
文件;Rename-Item
:改名字;{ $_.BaseName + ".md" }
:保留文件名,只改扩展名。
效果一模一样:
说明.txt → 说明.md
待办.txt → 待办.md
日记.txt → 日记.md
✅ 进阶技巧:一次性改多个后缀类型
比如同时把 .log
和 .bak
文件都改成 .txt
,你可以组合两条命令一起写:
Get-ChildItem -Filter *.log | Rename-Item -NewName { $_.BaseName + ".txt" }
Get-ChildItem -Filter *.bak | Rename-Item -NewName { $_.BaseName + ".txt" }
🔚 写在最后
别小看这个批量改名操作,我以前做博客迁移、Markdown 批量处理,几百个文件一个个手动改后缀真的会崩溃。有了这两种命令方式,不管你是习惯用 CMD 还是 PowerShell,都能轻松应对。
如果你有类似文件处理的批量需求,欢迎留言,我可以把这些命令封装成 .bat
或 PowerShell 脚本打包好发你,效率拉满。
📦 附送:一键打包 CMD 脚本(可选放在文末或评论区)
@echo off
for %%f in (*.txt) do ren "%%f" "%%~nf.md"
echo 所有 txt 文件已成功改成 md!
pause
如果你觉得这篇文章有帮助,记得点赞收藏,下次再找就方便多了!