notepad++无法直接修改文件后缀名,因其仅为文本编辑器,不具文件系统操作权限;真正改后缀需借助系统命令(如ren、powershell或mv),notepad++仅可辅助生成并执行命令。

Notepad++ 本身不能改文件后缀名
直接在 Notepad++ 里用 Ctrl+H 把 .log 替换成 .bak,只改了文件内容里的字符串,磁盘上那些文件名一个都没变。Notepad++ 是文本编辑器,不是文件管理器——它没权限操作文件名、路径或属性。你看到资源管理器图标没更新、双击还用记事本打开、右键重命名发现名字根本没动,说明根本没生效。
真正改后缀必须调用系统命令:ren(Windows)、Rename-Item(PowerShell)或 mv(Linux/macOS)。Notepad++ 在这事里只干三件事:生成命令、粘贴路径、触发执行(靠插件桥接)。
NppExec + cmd:单层目录快速改法
前提:已装 NppExec 插件(Plugins → Plugins Admin → 勾选 NppExec)。适合路径不含中文、不跨盘符、不递归子目录的场景。
- 把目标文件全拖进「文件浏览器」→ 右键 →
Copy Full Paths - 新建文档粘贴,用
Ctrl+H替换\r\n为空格,得到一行路径:"C:\a\1.log" "C:\a\2.log"(引号不能少) - 按
F6打开NppExec控制台,输入:cmd /c for %i in ($(CURRENT_WORD)) do @ren "%~i" "%~ni.bak"
注意点:
-
%~ni提取不带后缀的文件名,%~i是完整路径 - 路径含空格时,
"%~i"和"%~ni.bak"都必须加英文双引号,否则ren截断报错 -
ren不支持跨盘符、不支持正则、不递归子目录
PowerShell 脚本:推荐用于子目录或中文路径
Notepad++ 这里只当草稿本,真干活的是 PowerShell。它自带预览、递归、正则和中文路径兼容性。
- 在目标文件夹 Shift+右键 →
在此处打开 PowerShell 窗口 - 先预览(不会真改):
Get-ChildItem *.log -Recurse | Rename-Item -NewName { $_.Name -replace '\.log$', '.bak' } -WhatIf - 确认无误后删掉
-WhatIf再执行 - 若只想改文件(跳过同名文件夹),加
-File参数:Get-ChildItem -Recurse -File *.log
优势:支持中文路径、可写正则、能递归、有 -WhatIf 安全预览、错误提示更明确。
别碰 Python Script 插件改后缀
虽然 Python Script 插件能写复杂逻辑,但实际踩坑多:
- 插件本身不自带
os.rename的跨盘符安全检查,容易静默失败 - 路径编码混乱时(比如 GBK 文件夹里混着 UTF-8 文件名),
os.listdir()返回乱码,renameTo()直接抛异常 - 没有
-WhatIf类机制,一执行就改,出错难回滚 - 不如直接写个 3 行 PowerShell 脚本,还能复制粘贴到任意 Windows 机器跑
真正麻烦的从来不是“怎么写”,而是“改完之后关联没变、图标没刷新、某些程序仍按旧后缀解析”。这些后续动作,得手动进注册表或用 assoc/ftype 命令补,Notepad++ 一概不管。











