В конце концов я нашел экспортный трубопровод, но это была боль. Вот мои заметки от этого:
Отключите сеть (-ы), чтобы OneNote не выполнял длительную синхронизацию OneDrive после каждого экспорта.
В списке «Блокноты» разверните блокнот, чтобы увидеть все вкладки.
Щелкните правой кнопкой мыши вкладку и нажмите «Экспорт ...».
Щелкните раскрывающийся список типов файлов и нажмите, Mчтобы выбрать .docx
формат. Нажмите, Enterчтобы выбрать его.
Нажмите еще Enterраз, чтобы сохранить экспортированный файл.
Повторите шаги 2-5 для каждой вкладки в блокноте.
Настройте pandoc и откройте окно PowerShell или cmd.
Перейдите в каталог, в котором .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, нажмите «Свойства», выберите «Режим QuickEdit», затем нажмите «ОК». Теперь снова щелкните значок окна 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
файла (веб-страница с одним файлом) или, если хотите, a .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
команда in rename-files-to-first-line
выполняется с аргументом -n
, который предотвращает перезапись любых файлов. Может быть несколько заметок, которые не будут переименованы, потому что первая строка в них пуста или что-то еще странное, но вы можете просто исправить эти несколько файлов вручную.
Погрейтесь в чистом спасении от OneNote.