notepad++无一键合并多文件原生功能,必须确保编码一致、行尾符统一、文件已打开;推荐用combine插件处理混合编码,或用powershell/python脚本显式控编码与顺序。

Notepad++ 本身没有“一键选中多个文件→直接合并成一个”的原生菜单项,所有看似快捷的操作都依赖前提条件:编码一致、行尾符统一、文件已打开或路径可控。盲目拖入复制粘贴,90% 出现中文乱码或换行错位。
用「文件 → 合并文件」前必须确认标签页顺序和编码
这个功能只对当前 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 - 不推荐手动复制粘贴:容易漏标签页、切错窗口、丢空行,尤其超过 5 个文件时出错率陡增
命令行合并(copy / type / PowerShell)要显式控编码
Windows 自带的 copy *.txt merged.txt 看似一行解决,实际默认用系统 ANSI 编码读写,遇到 UTF-8 without BOM 文件,开头字节可能被当控制符吞掉,导致乱码或截断。
- 安全做法:先用 Notepad++ 打开每个源文件,看右下角编码,统一转成同一种再执行命令
-
copy /b *.txt merged.txt:加/b参数避免文本模式插入^Z结束符,但依然不控编码 - 更稳的 PowerShell 写法:
Get-Content *.txt -Encoding UTF8 | Set-Content merged.txt -Encoding UTF8,显式指定编码 - 要控顺序?别用
*,改用type 01_章.txt 02_章.txt > 全本.txt,文件名即顺序
Python 脚本合并适合加逻辑(跳过空文件、插标题、统一分隔)
Notepad++ 内置的 Python Script 插件能直接运行脚本,不用切终端,适合需要定制规则的场景,比如过滤空文件、在每段前加 --- filename.txt --- 标题、强制统一换行符。
- 装插件:菜单「插件 → Python Script → Install」
- 新建脚本:「Plugins → Python Script → New script」,存为
merge_txt.py - 关键点:
open(..., encoding="utf-8")必须显式声明,不能用encoding="gbk"硬套——得先确认源文件真实编码 - 示例片段:
if os.path.getsize(f) == 0: continue跳过空文件;outfile.write(f"--- {f} ---\n")插入分隔标题 - 注意:脚本里缩进必须用空格,不是 Tab;路径含中文或空格时,
glob.glob("*.txt")仍可用,但需确保当前工作目录正确
真正容易被忽略的是:所有方法都依赖「源文件编码可识别」。Notepad++ 右下角显示的编码只是它自己的猜测,如果文件没 BOM 且内容全是 ASCII,它可能把 UTF-8 错判成 ANSI。这时候靠肉眼判断不准,得用其他工具(如 VS Code)验证,或者直接用 file 命令(WSL)查真实编码。











