Ich fand schließlich eine Export-Pipeline, aber es war ein Schmerz. Hier sind meine Notizen dazu:
Arbeitsablauf:
Schalten Sie Ihre Netzwerke aus, um zu verhindern, dass OneNote nach jedem Export eine längere OneDrive-Synchronisierung durchführt.
Erweitern Sie in der Liste Notizbücher das Notizbuch, um alle Registerkarten anzuzeigen.
Klicken Sie mit der rechten Maustaste auf eine Registerkarte und klicken Sie auf "Exportieren ...".
Klicken Sie auf die Dateityp-Dropdown-Liste und drücken Sie M, um das
.docx
Format auszuwählen . Drücken Enter, um es auszuwählen.Drücken Sie Entererneut, um die exportierte Datei zu speichern.
Wiederholen Sie die Schritte 2 bis 5 für jede Registerkarte im Notizbuch.
Richten Sie Pandoc ein und öffnen Sie ein PowerShell- oder Cmd-Fenster.
cd in das Verzeichnis, in dem sich die exportierten
.docx
Dateien befinden..docx
Verwenden Sie für jede exportierte Datei den folgenden Pandoc-Befehl, um sie in Markdown (durchjournal
den Namen Ihrer Datei ersetzen) zu konvertieren :pandoc --extract-media='' --wrap=preserve '.\journal.docx' -o journal.md
Hier eine Erklärung des Befehls:
--extract-media=''
Hiermit wird pandoc angewiesen, Bilder aus der.docx
Datei zu extrahieren und diese in den Standardunterordner (standardmäßig "media") zu speichern.--wrap=preserve
teilt pandoc mit, dass die Ausgabedatei nicht mit Zeilenumbrüchen festgeschrieben wird (dies ist die Standardeinstellung). Das nächste Feld ist der eingegebene Dateiname und-o
steht für 'Ausgabe', ebensojournal.md
der Ausgabedateiname.Wenn Sie diese Datei nicht teilen möchten (z. B. wenn Ihre Registerkarte nur eine Seite enthielt), fahren Sie mit Schritt 15 fort.
(Wenn Sie einige davon ausführen, können Sie die ↑Taste (Aufwärtspfeil) drücken, um den vorherigen Befehl in der Shell aufzurufen, und dann den Dateinamen bearbeiten.)
Erstellen Sie einen neuen Ordner, um die Seiten auf der Registerkarte zu speichern. In diesem Beispiel werden jetzt alle Seiten unserer Registerkarte "Journal" in OneNote zusammengefügt
journal.md
. Erstellen Sie einen Ordner, injournal
dem die endgültigen getrennten Seiten als einzelne .md-Dateien gespeichert werden.Wenn sich Bilder in der
.docx
Datei befanden, werden diese in einen neuen Ordner mit dem Namen exportiertmedia
. Ziehen Sie den Medienordner, falls vorhanden, in den Ordner, den Sie gerade erstellt haben. (Deshalb müssen wir jede Pandoc-Operation separat ausführen, da bei jedem Export ein eigener Medienordner erstellt wird, und wir möchten diese getrennt aufbewahren, damit die Links in den Markdown-Dateien ordnungsgemäß funktionieren. Wir könnten ein geschicktes Skript schreiben, um all dies zu tun automatisch, aber es dauert weniger Zeit, es einfach manuell zu erledigen, es sei denn, Sie haben eine große Anzahl von Notizbüchern.) (Hinweis: Sie können einen Schritt speichern, indem Sie den gewünschten Ordnernamen in die einfachen Anführungszeichen des--extract-media=''
Arguments setzen - für.docx
Dateien mit Bildern: Ein Ordner wird automatisch für Sie erstellt.)Öffnen Sie ein Bash-Terminal und wechseln Sie in das Verzeichnis, in dem sich die
.md
Datei befindet. Der Ordner, den Sie in Schritt 10 erstellt haben, muss ein Unterordner dieses Ordners sein (es sei denn, Sie korrigieren den Pfad im folgenden Befehl).Falls noch nicht geschehen, klicken Sie auf das Windows Bash-Fenstersymbol, klicken Sie auf Eigenschaften, überprüfen Sie den QuickEdit-Modus, und klicken Sie dann auf OK. Klicken Sie jetzt erneut auf das Windows-Bash-Fenstersymbol, klicken Sie diesmal auf Defaults, überprüfen Sie den QuickEdit-Modus und klicken Sie dann auf OK (damit neue Bash-Fenster, die Sie zukünftig erstellen, diese Einstellung behalten). Jetzt können Sie Text im Terminal auswählen und Ctrl+ drücken, um Czu kopieren, oder mit der rechten Maustaste auf das Terminalfenster klicken, um den Text in die Zwischenablage einzufügen. Jetzt können wir unseren Befehl an einem separaten Ort vorbereiten und jede Version schnell in Bash einfügen.
Passen Sie den folgenden Befehl an und führen Sie ihn für jede
.md
Datei aus, die Sie in einzelne Seiten aufteilen möchten:csplit ./journal.md --keep-files --prefix='journal/journalentry ' --suffix-format='%i.md' --elide-empty-files '/^\(Monday\|Tuesday\|Wednesday\|Thursday\|Friday\|Saturday\|Sunday\),/-2' '{*}'
(Geben Sie es als eine Zeile ein.)
Wie Sie sehen,
journal.md
ist der Name unserer Markdown-Datei (im aktuellen Verzeichnis mit gekennzeichnet./
), das zweite Vorkommen vonjournal
(after--prefix='
) ist der Name unseres Unterordners, der die aufgeteilten Dateien enthält, undjournalentry
wie jede Datei benannt wird (gefolgt von einer Indexnummer).Wenn Sie den Befehl verstehen möchten, wird Folgendes erklärt: Es werden
--keep-files
immer noch Dateien gedruckt, wenn Fehler oder das Ende der Datei aufgetreten sind. Stellen Sie sicher, dass die letzte Seite korrekt ausgegeben wird (da sie nicht im Muster unseres regulären Ausdrucks endet).--prefix
Legt das Benennungsschema der Ausgabedateien fest.--suffix-format
erlaubt uns, unsere Dateierweiterung.md
festzulegen ( in diesem Fall), aber wir müssen%i
für die sprintf-Anweisung angeben, die die Indexnummer der Datei ausgibt.--elide-empty-files
Überspringt die Ausgabe leerer Dateien, die uns egal sind. Schließlich der reguläre Ausdruck, der mit beginnt'/
und mit endet/-2'
, legt fest, wann die Datei aufgeteilt werden soll: "Wenn Sie (/) am Anfang der Zeile (^) finden, (() Montag oder (\ |) Dienstag oder Mittwoch oder Donnerstag oder Freitag oder Freitag oder Samstag oder Sonntag ()) ) gefolgt von einem Komma, gehen Sie zwei Zeilen zurück (-2) ", teilen Sie die Datei dort auf und geben Sie aus, was wir bis jetzt haben. Das letzte Bit'{*}'
wiederholt den vorherigen Befehl auf unbestimmte Zeit, bis das Ende der Datei erreicht ist.Ziehen Sie die Dateien
.docx
und.md
in einen Ordner. Sagen Sie einen Ordner, den Sie jetzt erstellenintermediates
. Oder Sie können sie einfach löschen. Es ist schön, sie für eine Weile zu speichern, bis Sie mit Ihrem neuen Dateiformat vertraut sind, falls Sie zurückgehen und auf etwas verweisen möchten, das während des Konvertierungsvorgangs aufgetreten ist. Wenn Sie sie jetzt in den Zwischenordner verschieben, besteht keine Chance, dass Sie vergessen, wo wir uns befinden und Schritte wiederholen.Wiederholen Sie die Schritte 9 bis 14 für jede
.docx
Datei, die Sie aus OneNote exportiert haben.Jetzt haben Sie für jedes Register einen Ordner mit einer Reihe von separaten
.md
Dateien, einen für jede Seite! Plus einmedia
Ordner in jedem Unterordner, der Bilder auf der Registerkarte OneNote hatte.Ich empfehle Ihnen, jedes Ihrer OneNote-Notizbücher als
.mht
Datei (Single File Web Page) zu exportieren, oder, wenn Sie möchten, eine.pdf
. Wenn in einigen Ihrer Markdown-Dateien aufgrund der mehrfachen Konvertierung Formatierungs- oder andere Informationen verloren gegangen sind, können Sie auf diese Weise jederzeit zurückgehen und einfach nachsehen, wie sie in der.mht
Datei aussehen sollten . Außerdem würde ich empfehlen, jedes Ihrer OneNote-Notizbücher als.onepkg
Datei (OneNote-Paket) zu exportieren, sodass Sie eine schöne endgültige Exportkopie haben, wenn Sie das Notizbuch in OneNote in seinem ursprünglichen / ursprünglichen Dateiformat erneut öffnen möchten (dies kann nützlich sein.) wenn der.mht
Datei beispielsweise auch die ursprüngliche Formatierung fehlt, die Sie wiederherstellen möchten).Wenn Sie jedes Notizbuch fertiggestellt haben, klicken Sie mit der rechten Maustaste auf das Notizbuch in OneNote und klicken Sie auf "Dieses Notizbuch schließen", damit Sie das Notizbuch nicht versehentlich bearbeiten und die neuen Änderungen erneut exportieren müssen. Für die Markdown-Ordner habe ich auch einen Ordner für jedes Notizbuch erstellt und alle Registerordner darin abgelegt.
Wenn Sie mit dem gesamten Exportprojekt fertig sind, können Sie alle OneNote-Notizbücher, die dort synchronisiert wurden, auf Ihrem OneDrive löschen (stellen Sie sicher, dass Sie jetzt Ihre eigenen Dateien sichern! Natürlich gibt es OneDrive für Linux oder Sie) könnte so etwas wie Syncthing versuchen).
Schließlich können wir alle unsere .md-Dateien in ihren OneNote-Seitentitel umbenennen, der die erste Zeile in jeder Datei ist, indem Sie zwei Skripts verwenden. Machen Sie die folgenden Dateien:
Datei 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
Datei 2:
~/scripts/recurse.sh
CDIR=$(pwd) for i in $(ls -R | grep :); do DIR=$ # Strip ':' cd $DIR $1 # Your command cd $CDIR done
Navigieren Sie dann zu Ihrem Notizenordner und führen Sie den
recurse.sh
Befehl mit demrename-files-to-first-line.sh
Befehl als Argument aus:$ ~/scripts/recurse.sh ~/scripts/rename-files-to-first-line.sh
Sie werden sehen, dass das Skript alle Ihre Dateien rekursiv durchläuft und einige Fehler in Dateien mit seltsamen ersten Zeilen (die nicht in einen Dateinamen konvertiert werden) und in anderen Randfällen auslöst. Der
mv
Befehl inrename-files-to-first-line
wird jedoch mit einem Argument ausgeführt-n
, das verhindert, dass Dateien überschrieben werden. Es gibt möglicherweise einige Notizen, die nicht umbenannt werden, da die erste Zeile leer oder etwas ungewöhnlich ist. Sie können diese wenigen Dateien jedoch manuell korrigieren.Genieße deine saubere Flucht vor OneNote.
Vorsichtsmaßnahmen:
Auf diese Weise werden keine Unterseiten erfasst. Sie müssen diese mit Unterunterordnern neu erstellen, wenn Sie möchten.
Ich weiß nicht, wie gut das mit Tabellen ist - Markdown ist für Tabellen ohnehin etwas unangenehm.
Möglicherweise gibt es andere Arten der Formatierung, z. B. Schriftarten, die beim Export verloren gehen oder fehlerhaft sind. Aber für reichhaltigen Text und Bilder funktioniert das ziemlich gut!