Я все-таки знайшов експортний трубопровід, але це був біль. Ось мої записки від цього:
Вимкніть свою мережу, щоб запобігти OneNote виконувати тривалу синхронізацію OneDrive після кожного експорту.
У списку Блокноти розгорніть зошит, щоб побачити всі вкладки.
Клацніть правою кнопкою миші на вкладці та натисніть "Експорт ...".
Клацніть спадне меню типу файлів і натисніть, Mщоб вибрати .docx
формат. Натисніть, Enterщоб вибрати його.
Натисніть Enterще раз, щоб зберегти експортований файл.
Повторіть кроки 2-5 для кожної вкладки в зошиті.
Налаштуйте pandoc та відкрийте вікно PowerShell або cmd.
CD в каталог, де знаходяться експортовані .docx
файли.
Для кожного експортованого .docx
файлу використовуйте таку команду pandoc, щоб перетворити його на розмітку (замінити journal
на ім'я вашого файлу):
pandoc --extract-media='' --wrap=preserve '.\journal.docx' -o journal.md
Ось пояснення команди: --extract-media=''
повідомляє pandoc витягувати зображення з .docx
файлу і поміщати їх у підпапку за замовчуванням (за замовчуванням називається "media"). --wrap=preserve
повідомляє pandoc не вкручувати вивідний файл з переривами рядків (це за замовчуванням). Наступним полем є ім'я вхідного файлу і -o
означає «вихідний», таким же journal.md
є і вихідний файл.
Якщо ви не хочете розділяти цей файл (наприклад, якщо на вкладці містилася лише одна сторінка), перейдіть до кроку 15.
(Коли ви робите купу цих, ви можете натиснути клавішу ↑(стрілка вгору), щоб згадати попередню команду в оболонці, а потім відредагувати назву файлу.)
Створіть нову папку для зберігання сторінок на вкладці. Для цього прикладу, зараз усі сторінки з нашої вкладки Журнал в OneNote збиваються разом journal.md
. Створіть папку під назвою, journal
яка зберігатиме остаточні розділені сторінки як окремі .md файли.
Якщо у .docx
файлі були зображення , вони будуть експортовані в нову папку під назвою media
. Перетягніть папку мультимедіа, якщо вона існує, у папку, яку ви тільки що створили. (Ось чому нам потрібно робити кожну операцію pandoc окремо, оскільки кожен експорт створить окрему медіа-папку, і ми хочемо зберегти їх окремо, щоб посилання у файлах розмітки працювали правильно. Ми могли написати розумний сценарій, щоб зробити це все автоматично, але це займе менше часу, щоб зробити це вручну, якщо у вас немає величезної кількості зошитів.) (Примітка. Ви можете зберегти крок, помістивши потрібне ім'я папки в єдині лапки --extract-media=''
аргументу - для .docx
файлів із зображеннями, папка буде створена автоматично для вас.)
Відкрийте bash-термінал і перейдіть до каталогу, що містить .md
файл. Папка, яку ви створили на кроці 10, повинна бути підпапкою цієї (якщо ви не зафіксували шлях у наступній команді).
Якщо ви ще цього не зробили, клацніть піктограму вікна Windows Bash, натисніть кнопку Властивості, перевірте режим швидкого редагування та натисніть кнопку ОК. Тепер ще раз натисніть на значок вікна Windows Bash, цього разу натисніть кнопку За замовчуванням, перевірте режим QuickEdit, а потім натисніть кнопку ОК (тому нові Bash вікна, які ви створите в майбутньому, запам’ятають це налаштування). Тепер ви можете вибрати текст у терміналі та натиснути Ctrl+, Cщоб скопіювати, або клацніть правою кнопкою миші вікно терміналу, щоб вставити текст у буфер обміну. Тепер ми можемо підготувати нашу команду в окремому місці та швидко вставити кожну версію в Bash.
Налаштуйте таку команду та запустіть її для кожного .md
файлу, який ви хочете розділити на окремі сторінки:
csplit ./journal.md --keep-files --prefix='journal/journalentry '
--suffix-format='%i.md' --elide-empty-files '/^\(Monday\|Tuesday\|Wednesday\|Thursday\|Friday\|Saturday\|Sunday\),/-2' '{*}'
(Введіть його як один рядок.)
Як бачите, journal.md
це ім'я нашого файлу розмітки (у поточній папці, позначається ./
), другим виникненням journal
(після --prefix='
) є ім'я нашої підпапки, яка буде містити розділені файли, і journalentry
це те, що кожен файл буде названий (далі - номер індексу).
Якщо ви хочете зрозуміти команду, ось пояснення: --keep-files
все-таки друкується файли, коли виникають помилки або кінець файлу, гарантуючи, що остання сторінка буде виведена правильно (оскільки вона не закінчується в шаблоні нашого регулярного виразу). --prefix
встановлює схему іменування вихідних файлів. --suffix-format
дозволяє нам встановити наше розширення файлу ( .md
в даному випадку), але ми повинні включити %i
для оператора sprintf, який виводить номер індексу файлу. --elide-empty-files
пропускає виведення порожніх файлів, які нас не цікавлять. Нарешті, регулярний вираз, який починається з '/
і закінчується/-2'
, визначає, коли слід розділити файл: він говорить "Коли ви знайдете (/) на початку рядка (^) наступне (() понеділок або (\ |) вівторок або середу чи четвер або п'ятницю або суботу або неділю () ), після чого ставиться кома, відступите два рядки (-2) "і розділіть файл там, вивівши те, що ми маємо досі. Заключний біт, '{*}'
повторює попередню команду нескінченно, до кінця файлу не буде досягнуто.
Перетягніть файли .docx
та .md
файли у папку, скажімо, папка, яку ви створили зараз, називається intermediates
. Або ви можете просто видалити їх. Приємно зберегти їх на деякий час, поки вам не зручно буде ваш новий формат файлу, на випадок, якщо ви хочете повернутися назад і посилатися на щось, що сталося під час перетворення. Перемістивши їх у папку "Проміжні продукти", тепер буде втрачено шанс забути, де ми знаходимось, і повторити кроки.
Повторіть кроки 9-14 для кожного .docx
файлу, який ви експортували з OneNote.
Тепер у вас є одна папка для кожної вкладки, з купою окремих .md
файлів у ній, по одній для кожної сторінки! Плюс media
папка у кожній підпапці, яка мала зображення на вкладці OneNote.
Я рекомендую експортувати кожен із ваших ноутбуків OneNote у вигляді .mht
файлу (веб-сторінка з одним файлом) або, якщо ви хочете, як .pdf
. Таким чином, якщо в деяких ваших файлах розмітки було втрачено форматування чи іншу інформацію, через багаторазове перетворення ви завжди можете повернутися назад і легко побачити, як це повинно виглядати у .mht
файлі. Крім того, я рекомендую експортувати кожен із своїх ноутбуків OneNote як .onepkg
файл (пакет OneNote), тому у вас є приємна остаточна експортна копія, якщо ви хочете знову відкрити Ноутбук в OneNote у його рідному / оригінальному форматі файлу (це може бути корисно якщо, наприклад, у .mht
файлі також відсутнє оригінальне форматування, яке ви хочете відновити).
Коли ви закінчите кожен ноутбук, клацніть правою кнопкою миші на ноутбуці в OneNote і натисніть «Закрити цей ноутбук», щоб ви не випадково редагували ноутбук і не довелося повторно експортувати свої нові зміни. Для папок розмітки я також створив папку для кожного блокнота і помістив у нього всі папки вкладок.
Коли ви закінчите весь експортний проект, ви можете перейти до свого OneDrive та видалити всі оригінали своїх ноутбуків OneNote, які там синхронізовані (звичайно, переконайтеся, що ви зараз створюєте резервні копії власних файлів! Є OneDrive для Linux, або ви може спробувати щось на кшталт Syncthing).
Нарешті, ми можемо перейменувати всі .md файли у їхню сторінку OneNote, що є першим рядком у кожному файлі, використовуючи два сценарії. Зробіть такі файли:
Файл 1: ~/scripts/rename-files-to-first-line.sh
for i in *md ; do mv -n "$i" "$(cat "$i"|head -n1|tr -d '\000-\037[]{}()/\?*')".md; done
Файл 2: ~/scripts/recurse.sh
CDIR=$(pwd)
for i in $(ls -R | grep :); do
DIR=${i%:} # Strip ':'
cd $DIR
$1 # Your command
cd $CDIR
done
Потім перейдіть до папки приміток і запустіть recurse.sh
команду, використовуючи rename-files-to-first-line.sh
команду як аргумент:
$ ~/scripts/recurse.sh ~/scripts/rename-files-to-first-line.sh
Ви побачите, що сценарій проходить через усі ваші файли рекурсивно, викидаючи деякі помилки на файли із дивними першими рядками (які не перетворюються на ім'я файлу) та на інші крайові регістри. Однак mv
команда в rename-files-to-first-line
виконується з аргументом -n
, що не дозволить їй перезаписати будь-які файли. Можливо, є кілька приміток, які не перейменовуються, оскільки перший рядок у них порожній або щось інше дивне, але ви можете виправити ці кілька файлів вручну.
Гуляйте в чистому втечі від OneNote.