OneNote 笔记搬家到 Markdown:用 onenote-md-exporter 一劳永逸的完整教程
OneNote 笔记搬家到 Markdown:用 onenote-md-exporter 一劳永逸的完整教程
【免费下载链接】onenote-md-exporterConsoleApp to export OneNote notebooks to Markdown formats项目地址: https://gitcode.com/gh_mirrors/on/onenote-md-exporter
你有没有算过,自己往 OneNote 里存了多少年的笔记?分区几十个、页面上千张,图片、表格、待办事项、双链全混在一起。某天你想换个笔记软件——Obsidian、Joplin 或者 Typora——却发现"导出"这件事几乎无从下手。手动复制粘贴,格式全崩;在线转换工具,隐私没保障;PDF 批量导出,层级和链接又全丢了。
onenote-md-exporter 正是为这个场景而生的开源命令行工具:它运行在 Windows 上,通过调用 OneNote 与 Word 的官方 COM 接口,把整个笔记本转换成标准 Markdown 或 Joplin 原生格式,整个过程完全在本地完成,不经过任何云端服务器。本文会带你从零开始,走完"准备 → 首次导出 → 按需定制 → 排查报错"的全流程。
先确认三件事:你的环境能不能跑起来
这个工具依赖 Windows 生态,动手前先对照这张清单自查:
| 检查项 | 要求 | 说明 |
|---|---|---|
| 操作系统 | Windows 10 及以上 | 需要桌面版系统 |
| OneNote | 2013 或更高版本 | 商店版(Microsoft Store 安装)不支持 |
| Microsoft Word | 2013 或更高版本 | 用于将页面导出为 DocX 中间格式 |
| .NET 运行时 | .NET 6 及以上 | 新版 release 已打包,一般无需手动装 |
还有一条容易被忽略的前提:导出前先把 OneNote 打开,并让目标笔记本完整同步到本地。工具通过 COM 接口与正在运行的 OneNote 实例通信,笔记本没加载完,导出结果就会缺页漏图。
十分钟跑通第一次导出:从选笔记本到喝咖啡
工具的使用路径非常直白,不需要写任何代码:
- 从 Releases 页面下载
OneNoteMdExporter压缩包并解压; - 启动 OneNote,确认要导出的笔记本已经全部加载;
- 双击运行
OneNoteMdExporter.exe,按提示输入笔记本编号、选择导出格式(1为 Markdown 文件夹,2为 Joplin 目录); - 按提示选择是否修改高级设置,然后回车确认开始;
- 导出期间页面会逐条滚动进度,完成后工具会自动用资源管理器打开导出文件夹。
喜欢命令行操作的话,所有参数都有对应选项,运行OneNoteMdExporter.exe --help即可查看全部说明。几个高频用法示例:
# 导出指定笔记本为 Markdown 格式 OneNoteMdExporter.exe --notebook "工作笔记" --format 1 --output "D:\笔记备份" # 导出为 Joplin 导入格式 OneNoteMdExporter.exe --notebook "学习资料" --format 2 --output "D:\Joplin导入" # 一键导出全部笔记本,跳过所有交互输入 OneNoteMdExporter.exe --all-notebooks --no-input需要批量处理多个笔记本时,可以把命令包进 PowerShell 循环里,导出后用文件数量做一次简单校验:
foreach ($nb in @("工作笔记", "学习资料")) { .\OneNoteMdExporter.exe --notebook $nb --format 1 --output "D:\导出\$nb" $count = (Get-ChildItem "D:\导出\$nb" -Recurse -Filter "*.md").Count Write-Host "$nb 导出完成,共 $count 个 Markdown 文件" }三种输出骨架怎么选:文件夹、前缀还是扁平化
每个笔记本里的"分区 → 父页面 → 子页面"层级,导出成文件后有很多种落盘方式。工具的ProcessingOfPageHierarchy参数提供了三种策略,效果差异见下表:
| 策略 | 文件结构示例 | 适合谁 |
|---|---|---|
HierarchyAsFolderTree(默认) | 分区/父页面/子页面.md | Obsidian 等支持多级文件夹的笔记库 |
HierarchyAsPageTitlePrefix | 分区/父页面_子页面.md | 想保留层级、又不希望目录过深的用户 |
IgnoreHierarchy | 分区/子页面.md | 层级无所谓、只要内容干净的用户 |
顺带一提,同分区里重名的页面会自动加后缀避免覆盖,你不用自己操心文件名冲突。
链接、图片和附件:四个开关决定迁移完整度
OneNote 内部用onenote://协议互链,直接搬到别的软件里全变死链。工具用OneNoteLinksHandling一个参数管住所有情况:
- KeepOriginal:原样保留
onenote://链接,适合未来可能回迁 OneNote 的场景; - ConvertToMarkdown:转成
文字,标准 Markdown 通用写法; - ConvertToWikilink(默认):转成
[[路径|显示文字]],Obsidian、Logseq 这类双链笔记的最爱; - Remove:只保留链接文字、删掉链接本身,适合彻底告别旧链接的场景。
图片和附件文件的位置由ResourceFolderLocation控制:选RootFolder会把所有资源集中在导出根目录下的一个resources文件夹;选PageParentFolder则让资源紧挨着各自的 Markdown 文件存放,方便整目录搬迁和共享。
内容还原度盘点:哪些保得住,哪些会丢
用之前最好先了解这个工具的能力边界,心里有数才不会期望落空:
| 内容类型 | 还原结果 | 备注 |
|---|---|---|
| 简单表格 | ✅ 转为 Markdown 表格 | 效果最好 |
| 复杂表格 | ✅ 转为 HTML 表格 | 需要编辑器支持 HTML |
| 图片 / 文件附件 | ✅ 完整保留 | 相对路径自动生成 |
| 折叠段落 | ✅ 自动展开 | |
| 字体颜色 / 背景色 | ✅ 转为 HTML 样式 | Obsidian、Joplin 均支持 |
| 文本标签(星标、旗帜等) | ✅ 转为 emoji | |
| 绘图内容 | ⚠️ 压平成图片 | 保留视觉但不保留矢量 |
| 密码保护分区 | ⚠️ 需先解锁 | 否则直接丢失 |
| 手写笔迹 | ❌ 无法还原 | 建议导出前手动截图 |
针对 Obsidian 和 Joplin 的两套推荐配置
工具根目录下的appSettings.json是唯一的配置文件,导出时按提示输入y会用记事本打开它。以下两套配置分别对应两大热门平台,可直接复制使用。
Obsidian 专用(强调双链与文件就近管理):
{ "ProcessingOfPageHierarchy": "HierarchyAsFolderTree", "ResourceFolderLocation": "PageParentFolder", "OneNoteLinksHandling": "ConvertToWikilink", "AddFrontMatterHeader": true, "UseHtmlStyling": true, "PanDocMarkdownFormat": "gfm+raw_html" }导出后把整个文件夹复制进 Obsidian 库,刷新文件列表即可;开启 Front Matter 后,每个文件头部会附带title、created、updated三类 YAML 元数据,供 Obsidian 的 Dataview 等插件直接读取。
Joplin 专用(直接走官方导入通道):
{ "ProcessingOfPageHierarchy": "HierarchyAsFolderTree", "ResourceFolderLocation": "RootFolder", "OneNoteLinksHandling": "ConvertToMarkdown", "PanDocMarkdownFormat": "gfm", "PostProcessingMdImgRef": true }用2号格式导出后,打开 Joplin,依次点击"文件 → 导入 → RAW - Joplin 导出目录",选中导出文件夹即可完成导入。相比先转 ENEX 再导入的传统路线,这套方案能完整保留分区层级和页面顺序。
报错排查清单:三个高频问题一次讲清
① 启动即报System.Runtime.InteropServices.COMException
说明工具没能连上 OneNote COM 组件。依次排查:OneNote 是否已打开并登录账户 → Office 安装是否完整(必要时修复重装)→ 是否用了商店版 OneNote(不支持)。最稳妥的替代方案是在别的电脑上把笔记本导出为.onepkg包,再导入后运行工具。
② 导出后图片缺失或显示为裂图
绝大多数情况下是 OneNote 本地缓存没同步完整。在 OneNote 的"文件 → 选项 → 同步"里打开"下载所有文件和图像",强制同步后再导出一次,问题通常消失。
③ 大笔记本导出特别慢
工具是逐页调 Word 再调 Pandoc 转换的,页面越多耗时越长。缓解办法:用--section参数按分区分批导出、把目标目录放到 SSD 上、导出时关掉占用资源的后台程序。工具自带了失败页面自动重试机制,如果 RPC 断连会等待 10 秒重建连接后再试一次,无需人工干预。
最后一步:给自己留条后路
迁移不是终点,而是知识管理方式的一次升级。建议你先挑一个非核心笔记本跑一遍完整流程,感受一下导出效果,再决定要不要全量迁移;正式迁移前务必给原始 OneNote 笔记本留好备份,工具本身也在文档里明确提醒过"不承担数据丢失责任"。
导出完成后,你还可以顺手做三件锦上添花的事:把 OneNote 标签批量映射成目标平台的标签、用正则修一遍历史文章里的格式瑕疵、把 Front Matter 里的时间字段同步到新笔记系统——从此,你的笔记不再被锁定在微软的围墙花园里。
挑一个周末下午,备份好数据,跑一次导出试试看。你会发现,通往更开放笔记生态的路,其实只有这一条命令的距离。
【免费下载链接】onenote-md-exporterConsoleApp to export OneNote notebooks to Markdown formats项目地址: https://gitcode.com/gh_mirrors/on/onenote-md-exporter
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
