W końcu znalazłem rurociąg eksportowy, ale to był problem. Oto moje notatki z tego:
Wyłącz swoje sieci, aby uniemożliwić OneNote wykonywanie długiej synchronizacji OneDrive po każdym eksporcie.
Na liście Notatniki rozwiń notatnik, aby wyświetlić wszystkie karty.
Kliknij kartę prawym przyciskiem myszy i kliknij polecenie „Eksportuj ...”.
Kliknij menu typu pliku i naciśnij, Maby wybrać .docxformat. Naciśnij, Enteraby go wybrać.
Naciśnij Enterponownie, aby zapisać wyeksportowany plik.
Powtórz kroki 2-5 dla każdej karty w notatniku.
Skonfiguruj pandoc i otwórz okno PowerShell lub cmd.
cd do katalogu, w którym znajdują się wyeksportowane .docxpliki.
Dla każdego eksportowanego .docxpliku użyj następującego polecenia pandoc, aby przekonwertować go na markdown (zamień journalna nazwę swojego pliku):
pandoc --extract-media='' --wrap=preserve '.\journal.docx' -o journal.md
Oto wyjaśnienie polecenia: --extract-media=''mówi pandoc, aby wyodrębnił obrazy z .docxpliku i umieścił je w domyślnym podfolderze (domyślnie zwanym „nośnikiem”). --wrap=preserveinformuje pandoc, aby nie zawijał pliku wyjściowego łamaniem wierszy (co jest ustawieniem domyślnym). Następne pole to wejściowa nazwa pliku i -ooznacza „wynik”, podobnie journal.mdjak wyjściowa nazwa pliku.
Jeśli nie chcesz dzielić tego pliku (na przykład jeśli karta zawiera tylko jedną stronę), przejdź do kroku 15.
(Kiedy robisz kilka z nich, możesz nacisnąć klawisz ↑(strzałka w górę), aby przywołać poprzednie polecenie w powłoce, a następnie edytować nazwę pliku).
Utwórz nowy folder do przechowywania stron na karcie. W tym przykładzie teraz wszystkie strony z naszej karty Dziennik w OneNote są połączone journal.md. Utwórz folder o nazwie, journalktóry będzie przechowywać końcowe oddzielone strony jako osobne pliki .md.
Jeśli w .docxpliku były jakieś obrazy , zostaną one wyeksportowane do nowego folderu o nazwie media. Przeciągnij folder multimediów, jeśli istnieje, do właśnie utworzonego folderu. (Dlatego właśnie musimy wykonać każdą operację pandoc osobno, ponieważ każdy eksport utworzy osobny folder multimediów i chcemy zachować te osobne, aby linki w plikach przeceny działały poprawnie. Moglibyśmy napisać sprytny skrypt, aby to wszystko zrobić automatycznie, ale zajmie to mniej czasu, aby zrobić to ręcznie, chyba że masz ogromną liczbę notatników.) (Uwaga: Możesz zapisać krok, umieszczając żądaną nazwę folderu w pojedynczych cudzysłowach --extract-media=''argumentu - w przypadku .docxplików z obrazami, folder zostanie utworzony automatycznie).
Otwórz terminal bash i cd do katalogu zawierającego .mdplik. Folder utworzony w kroku 10 musi być podfolderem tego folderu (chyba że naprawisz ścieżkę w poniższym poleceniu).
Jeśli jeszcze tego nie zrobiłeś, kliknij ikonę okna Windows Bash, kliknij Właściwości, zaznacz Tryb QuickEdit, a następnie kliknij OK. Teraz kliknij ponownie ikonę okna Windows Bash, tym razem kliknij Domyślne, sprawdź Tryb QuickEdit, a następnie kliknij OK (aby nowe okna Bash, które utworzysz w przyszłości, zapamiętały to ustawienie). Teraz możesz zaznaczyć tekst w terminalu i nacisnąć Ctrl+, Caby skopiować, lub kliknąć prawym przyciskiem myszy okno terminala, aby wkleić tekst do schowka. Teraz możemy przygotować nasze polecenie w osobnym miejscu i szybko wkleić każdą wersję do Bash.
Dostosuj następujące polecenie i uruchom je dla każdego .mdpliku, który chcesz podzielić na poszczególne strony:
csplit ./journal.md --keep-files --prefix='journal/journalentry '
--suffix-format='%i.md' --elide-empty-files '/^\(Monday\|Tuesday\|Wednesday\|Thursday\|Friday\|Saturday\|Sunday\),/-2' '{*}'
(Wpisz jako jedną linię.)
Jak widać, journal.mdjest to nazwa naszego pliku przeceny (w bieżącym katalogu oznaczonym przez ./), drugie wystąpienie journal(po --prefix=') to nazwa naszego podfolderu, który będzie zawierał podzielone pliki i journalentryto, jak każdy plik będzie się nazywał (po którym następuje numer indeksu).
Jeśli chcesz zrozumieć polecenie, oto wyjaśnienie: --keep-filesnadal drukuje pliki po napotkaniu błędów lub końca pliku, zapewniając, że ostatnia strona zostanie wydrukowana poprawnie (ponieważ nie kończy się ona na wzorcu naszego wyrażenia regularnego). --prefixustawia schemat nazewnictwa plików wyjściowych. --suffix-formatpozwala nam ustawić nasze rozszerzenie pliku ( .mdw tym przypadku), ale musimy dołączyć %ido instrukcji sprintf, która wyświetla numer indeksu pliku. --elide-empty-filespomija wyświetlanie pustych plików, na których nam nie zależy. Wreszcie wyrażenie regularne, które zaczyna się '/i kończy na/-2', określa, kiedy podzielić plik: napis „Gdy znajdziesz (/) na początku wiersza (^), następujący (() poniedziałek lub (\ |) wtorek lub środa lub czwartek lub piątek lub sobota lub niedziela () ), po którym następuje przecinek, cofnij się o dwie linie (-2) ”i podziel plik tam, uzyskując to, co mamy do tej pory. Ostatni bit, '{*}'powtarza poprzednie polecenie w nieskończoność, aż do osiągnięcia końca pliku.
Przeciągnij pliki .docxi .mddo folderu, powiedz folder, który teraz utworzysz intermediates. Lub możesz je po prostu usunąć. Przyjemnie jest je zapisać przez chwilę, dopóki nie poczujesz się komfortowo z nowym formatem pliku, na wypadek gdybyś chciał wrócić i odwołać się do czegoś, co wydarzyło się podczas procesu konwersji. Przeniesienie ich teraz do folderu pośredniego zwiększy szansę zapomnienia, gdzie jesteśmy i powtórzenia kroków.
Powtórz kroki 9-14 dla każdego .docxpliku wyeksportowanego z OneNote.
Teraz masz jeden folder dla każdej karty, z garstką oddzielnych .mdplików, po jednym dla każdej strony! Plus mediafolder w każdym podfolderze, który miał obrazy na karcie OneNote.
Zalecam wyeksportowanie każdego ze swoich notesów OneNote jako .mhtpliku (pojedyncza strona sieci Web) lub, jeśli wolisz, pliku .pdf. W ten sposób, jeśli utraciłeś formatowanie lub inne informacje w niektórych plikach przeceny, z powodu wielokrotnej konwersji, zawsze możesz wrócić i łatwo zobaczyć, jak miało to wyglądać w .mhtpliku. Ponadto zaleciłbym wyeksportowanie każdego ze swoich notesów OneNote jako .onepkgpliku (pakiet OneNote), więc masz fajną ostateczną kopię eksportu, jeśli kiedykolwiek chcesz ponownie otworzyć notes w OneNote w jego natywnym / oryginalnym formacie (może to być przydatne jeśli na przykład w .mhtpliku brakuje również oryginalnego formatowania, które chcesz odzyskać).
Po zakończeniu każdego notatnika kliknij prawym przyciskiem myszy notes w programie OneNote i kliknij polecenie „Zamknij ten notatnik”, aby nie przypadkowo edytować notesu i trzeba ponownie wyeksportować nowe zmiany. Dla folderów przeceny utworzyłem również folder dla każdego notatnika i umieściłem w nim wszystkie foldery z kartami.
Po zakończeniu całego projektu eksportu możesz przejść do OneDrive i usunąć wszystkie oryginały notesów OneNote, które zostały tam zsynchronizowane (oczywiście upewnij się, że teraz tworzysz kopie zapasowe własnych plików! Istnieje OneDrive dla systemu Linux lub może spróbować czegoś takiego jak Syncthing).
Wreszcie możemy zmienić nazwę wszystkich plików .md na tytuł strony OneNote, który jest pierwszym wierszem każdego pliku, za pomocą dwóch skryptów. Utwórz następujące pliki:
Plik 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
Plik 2: ~/scripts/recurse.sh
CDIR=$(pwd)
for i in $(ls -R | grep :); do
DIR=${i%:} # Strip ':'
cd $DIR
$1 # Your command
cd $CDIR
done
Następnie przejdź do folderu notatek i uruchom recurse.shpolecenie, używając rename-files-to-first-line.shpolecenia jako argumentu:
$ ~/scripts/recurse.sh ~/scripts/rename-files-to-first-line.sh
Zobaczysz skrypt przechodzący rekurencyjnie przez wszystkie twoje pliki, generujący błędy w plikach z dziwnymi pierwszymi wierszami (które nie zostaną przekonwertowane na nazwę pliku) i w innych przypadkach krawędzi. Jednak mvpolecenie w rename-files-to-first-linejest wykonywane z argumentem -n, co zapobiegnie zastąpieniu jakichkolwiek plików. Może być kilka notatek, których nie można zmienić nazwy, ponieważ pierwszy wiersz w nich jest pusty lub coś innego dziwnego, ale możesz po prostu naprawić te kilka plików ręcznie.
Zanurz się w czystej ucieczce z OneNote.