Notepad++无原生多文件一键合并功能,必须满足文件全打开、编码一致、行尾符统一三前提;否则必现乱码或粘连。内置“合并文件”按标签页顺序拼接并加空行;Combine插件可自动处理混合编码;NppExec和Python Script提供更灵活方案。

Notepad++ 本身没有“选中多个文件→一键合并”的原生功能,所有看似快捷的操作都依赖三个硬性前提:文件已全部打开、编码一致、行尾符统一。跳过任一环节,中文乱码、段落粘连、空行错位就会立刻出现。
用「文件 → 合并文件」前必须确认标签页顺序和编码
这个菜单项只对当前 Notepad++ 实例中「已打开且未关闭」的标签页生效,按从左到右顺序拼接,每段之间自动加一个空行(不可关闭)。
- 先全部打开目标文件:可多选后拖入窗口,或按
Ctrl+O多选打开 - 检查右下角状态栏:所有文件编码必须一致(如全是
UTF-8或全是GBK),否则中文变问号;不一致就点「编码 → 转为 UTF-8」再保存 - 确认行尾符统一:菜单「视图 → 显示符号 → 显示所有字符」,看是否都是
CRLF或都是LF;混用会导致前后内容“粘”在一起 - 顺序即标签页顺序:想控序就提前在资源管理器里重命名成
01_章.txt这类,再批量打开
Combine 插件处理混合编码最省心
当源文件含 UTF-8 with BOM、GBK、ANSI 混合时,内置「合并文件」会失败,而 Combine 插件能自动识别并转码,适合小说、日志等真实场景。
- 安装:
插件 → 插件管理器 → 显示插件管理器,搜索Combine并勾选安装 - 操作:全部文件用
Ctrl+O打开 →插件 → Combine → Start→ 勾选所有标签页 → 点Combine→ 选路径保存 -
Combine默认按标签页顺序,不是文件名顺序;输出文件编码固定为UTF-8 without BOM;它不会修改原始文件
NppExec 执行 copy /b 合并大量文件
适合几十个文件、或需自定义分隔的场景。命令行快,但编码继承第一个被合并文件——仍需提前统一,否则乱码或截断。
- 确保已安装
NppExec(菜单「插件 → 插件管理器」勾选) - 示例脚本(合并当前目录下所有
.txt文件):cd $(CURRENT_DIRECTORY) cmd /c"copy /b *.txt merged_output.txt"
-
copy /b避免文本模式插入^Z结束符,但不控制编码;若要显式指定UTF-8,得换用 PowerShell:Get-Content *.txt -Encoding UTF8 | Set-Content merged.txt -Encoding UTF8
- 想在每段前插入文件名?
NppExec脚本需写for循环 +echo,但路径含空格时极易出错,新手慎用
Python Script 插件实现可控合并
适合要加逻辑的场景,比如跳过空文件、过滤特定行、插入章节标题、自动去重。Notepad++ 内置的 Python Script 插件能直接调用,不用切终端。
- 装好
Python Script插件后,菜单「Plugins → Python Script → New script」,存为merge_txt.py - 写入以下内容(注意缩进用空格,不是 Tab):
import glob import os <p>read_files = glob.glob("*.txt") with open("merged.txt", "w", encoding="utf-8") as outfile: for f in read_files: if os.path.getsize(f) == 0: # 跳过空文件 continue outfile.write(f"--- {f} ---\n") # 插入文件名分隔 with open(f, "r", encoding="utf-8") as infile: outfile.write(infile.read()) outfile.write("\n\n") - 该脚本默认读取当前目录下所有
.txt,但不感知 Notepad++ 标签页状态;若需限定打开的文件,得改用notepad.getFiles()获取路径列表
真正麻烦的从来不是“怎么合并”,而是合并前没人愿意花两分钟确认编码和行尾符——结果合并完发现中文是乱码、SQL 语句被截断、日志时间戳错位。这些细节不会报错,只会静默损坏数据。



















