Notepad++无内置自动清理旧备份功能,所有备份文件需手动或通过Windows任务计划+PowerShell定期清理;其设计只写入不删除,官方未提供时间阈值清理逻辑。

Notepad++ 本身不提供“按天自动清理旧备份”的内置功能,所有备份文件(.bak、recovery_*.tmp、session.xml)都由用户手动管理或依赖外部工具清理。
为什么 Notepad++ 没有自动清理旧备份的选项
它的备份机制设计为“写入优先、不干预生命周期”:只要磁盘空间够,就一直存着。官方从未加入时间阈值清理逻辑(比如“保留7天内备份”),也没有配置项或插件 API 暴露清理钩子。所有“自动”相关设置(如 Auto-save recovery data every)只控制生成频率,不控制删除行为。
常见误解是以为勾选了 Enable backup 或启用了 Session snapshot 就附带清理能力——实际完全相反:这些开关只会让旧文件越积越多。
用 Windows 任务计划 + PowerShell 手动实现每日清理
这是最稳定、无需第三方工具、且能精准控制保留天数的方式。关键点在于:Notepad++ 的备份路径必须明确,且你有写入权限。
-
先确认你的备份目录位置:默认是
%APPDATA%\Notepad++\backup\;如果改过路径,请在Settings → Preferences → Backup里记下Backup directory的实际值 -
PowerShell 脚本示例(保留最近 7 天):
Get-ChildItem "$env:APPDATA\Notepad++\backup\*" -Include "*.bak","recovery_*.tmp","session.xml" | Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-7) } | Remove-Item -Force -
创建定时任务步骤:
- 打开
taskschd.msc - 新建基本任务 → 命名(如 “NPP cleanup old backups”)→ 触发器设为“每天”,时间建议选低峰期(如凌晨 2:00)
- 操作选“启动程序”,程序填
powershell.exe,参数填:-ExecutionPolicy Bypass -File "C:\path\to\cleanup-npp-backups.ps1" - 务必勾选“不管用户是否登录都要运行”,并启用“运行时需最高权限”(否则可能无权删
%APPDATA%下文件)
- 打开
Local History 插件的备份怎么清理
如果你还装了 Local History 插件(它会在每个源文件同级建 .history/ 目录),它的历史文件是独立存储的,不会被上面的脚本覆盖。需要单独处理:
- 它的路径固定为:
同级目录\.history\*.txt(文件名含时间戳),不走 Notepad++ 主备份目录 - 同样可用 PowerShell 清理,但目标路径要改成递归扫描:
Get-ChildItem "C:\" -Recurse -Directory -Filter ".history" -ErrorAction SilentlyContinue | ForEach-Object { Get-ChildItem "$($_.FullName)\*" -Include "*.txt" | Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-7) } | Remove-Item -Force } - 注意:此命令会扫描全盘,若只想清理特定项目目录,请把
C:\换成具体路径(如D:\projects\)
真正容易被忽略的是:Notepad++ 在运行时会锁住正在使用的 session.xml 和部分 recovery_*.tmp,所以定时任务必须确保 Notepad++ 已完全退出(包括托盘进程),否则清理可能失败且不报错——建议在任务触发前加一句 taskkill /f /im notepad++.exe。


















