Am Ende fand ich eine Exportpipeline, aber es war ein Schmerz. Hier sind meine Notizen dazu:
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 Dropdown-Liste Dateityp und drücken Sie M, um das .docx
Format auszuwählen . Drücken Sie 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 zu konvertieren (durch journal
den Namen Ihrer Datei ersetzen ):
pandoc --extract-media='' --wrap=preserve '.\journal.docx' -o journal.md
Hier ist eine Erklärung des Befehls: --extract-media=''
Weist Pandoc an, Bilder aus der .docx
Datei zu extrahieren und sie in den Standard-Unterordner (standardmäßig "Medien" genannt) zu legen. --wrap=preserve
weist pandoc an, die Ausgabedatei nicht mit Zeilenumbrüchen fest zu verpacken (dies ist die Standardeinstellung). Das nächste Feld ist der Eingabedateiname und -o
steht für 'Ausgabe', ebenso journal.md
wie der Ausgabedateiname.
Wenn Sie diese Datei nicht teilen möchten (z. B. wenn Ihre Registerkarte nur eine Seite enthält), 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 abzurufen, und dann den Dateinamen bearbeiten.)
Erstellen Sie einen neuen Ordner, um die Seiten auf der Registerkarte zu speichern. In diesem Beispiel werden derzeit alle Seiten unserer Registerkarte "Journal" in OneNote zusammengeführt journal.md
. Erstellen Sie einen Ordner mit dem Namen, in journal
dem die endgültig getrennten Seiten als einzelne MD-Dateien gespeichert werden.
Wenn die .docx
Datei Bilder enthält, werden diese in einen neuen Ordner mit dem Namen exportiert media
. Ziehen Sie den Medienordner, falls vorhanden, in den Ordner, den Sie gerade erstellt haben. (Aus diesem Grund müssen wir jede Pandoc-Operation separat ausführen, da bei jedem Export ein separater Medienordner erstellt wird. Wir möchten diese getrennt halten, damit die Links in den Markdown-Dateien ordnungsgemäß funktionieren. Wir könnten dazu ein cleveres Skript schreiben automatisch, aber es dauert weniger, es nur manuell zu tun, es sei denn, Sie haben eine große Anzahl von Notizbüchern.) (Hinweis: Sie können einen Schritt speichern, indem Sie Ihren gewünschten Ordnernamen in einfache 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 eine CD 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 legen den Pfad im folgenden Befehl fest).
Wenn Sie dies noch nicht getan haben, klicken Sie auf das Windows Bash-Fenstersymbol, klicken Sie auf Eigenschaften, aktivieren Sie den QuickEdit-Modus und klicken Sie dann auf OK. Klicken Sie nun erneut auf das Windows Bash-Fenstersymbol. Klicken Sie diesmal auf Standardeinstellungen, aktivieren Sie den QuickEdit-Modus und klicken Sie dann auf OK (damit neue Bash-Fenster, die Sie in Zukunft erstellen, diese Einstellung speichern). Jetzt können Sie Text im Terminal auswählen und zum Kopieren Ctrl+ drücken Coder 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 können, journal.md
ist der Name unserer Markdown-Datei (im aktuellen Verzeichnis, gekennzeichnet mit ./
), das zweite Vorkommen von journal
(nach --prefix='
) der Name unseres Unterordners, der die geteilten Dateien enthält, und journalentry
wie jede Datei benannt wird (gefolgt von einer Indexnummer).
Wenn Sie den Befehl verstehen möchten, finden Sie hier eine Erklärung: --keep-files
Druckt weiterhin Dateien, wenn Fehler auftreten oder das Ende der Datei auftritt, um sicherzustellen, dass die letzte Seite korrekt ausgegeben wird (da sie nicht im Muster unseres regulären Ausdrucks endet). --prefix
Legt das Namensschema der Ausgabedateien fest. --suffix-format
ermöglicht es uns, unsere Dateierweiterung .md
festzulegen ( in diesem Fall), aber wir müssen %i
für die sprintf-Anweisung einschließen, 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'
, definiert, wann die Datei geteilt werden soll: Es heißt "Wenn Sie (/) am Anfang der Zeile (^) den folgenden (() Montag oder (\ |) Dienstag oder Mittwoch oder Donnerstag oder Freitag oder Samstag oder Sonntag () finden." ) gefolgt von einem Komma, treten Sie zwei Zeilen (-2) zurück "und teilen Sie die Datei dort auf und geben Sie das aus, was wir bisher 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, beispielsweise einen Ordner, den Sie jetzt erstellen intermediates
. 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 Konvertierungsprozesses passiert ist. Wenn Sie sie jetzt in den Zwischenordner verschieben, können Sie nicht 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 einen Ordner für jede Registerkarte mit einer Reihe separater .md
Dateien, eine für jede Seite! Plus einen media
Ordner in jedem Unterordner, der Bilder auf der Registerkarte OneNote enthielt.
Ich empfehle, jedes Ihrer OneNote-Notizbücher als .mht
Datei (Single File Web Page) oder, wenn Sie es vorziehen, als a zu exportieren .pdf
. Auf diese Weise können Sie jederzeit zurückgehen und leicht sehen, wie es in der .mht
Datei aussehen sollte, wenn in einigen Ihrer Markdown-Dateien Formatierungen oder andere Informationen aufgrund der mehrfachen Konvertierung verloren gegangen sind . Darüber hinaus würde ich empfehlen, jedes Ihrer OneNote-Notizbücher als .onepkg
Datei (OneNote-Paket) zu exportieren, damit Sie eine schöne endgültige Exportkopie haben, wenn Sie das Notizbuch in OneNote jemals in seinem nativen / ursprünglichen Dateiformat erneut öffnen möchten (dies kann nützlich sein Wenn in der .mht
Datei beispielsweise auch eine Originalformatierung 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 Ihre neuen Änderungen erneut exportieren müssen. Für die Markdown-Ordner habe ich außerdem für jedes Notizbuch einen Ordner erstellt und alle Registerkartenordner darin abgelegt.
Wenn Sie mit dem gesamten Exportprojekt fertig sind, können Sie zu Ihrem OneDrive gehen und alle dort synchronisierten OneNote-Notebook-Originale löschen (stellen Sie sicher, dass Sie jetzt Ihre eigenen Dateien sichern! Es gibt OneDrive für Linux oder Sie könnte so etwas wie Syncthing versuchen).
Schließlich können wir alle unsere MD-Dateien mithilfe von zwei Skripten in den OneNote-Seitentitel umbenennen, der die erste Zeile in jeder Datei darstellt. 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=${i%:} # Strip ':'
cd $DIR
$1 # Your command
cd $CDIR
done
Navigieren Sie dann zu Ihrem Notizenordner und führen Sie den recurse.sh
Befehl mit dem rename-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 in rename-files-to-first-line
wird jedoch mit einem Argument ausgeführt -n
, wodurch verhindert wird, dass Dateien überschrieben werden. Möglicherweise gibt es einige Notizen, die nicht umbenannt werden, da die erste Zeile leer oder etwas Seltsames ist. Sie können diese wenigen Dateien jedoch einfach manuell reparieren.
Genießen Sie Ihre saubere Flucht vor OneNote.