Wie kann ich alle OneNote-Seiten in einzelne Markdown-Dateien exportieren?

3843
Anders

Ich wechsle zu Linux und die letzte Hürde besteht darin, OneNote zu verlassen. Ich möchte alle meine Notizbücher exportieren, sodass jede Seite in eine einzelne Markdown-Datei verschoben wird.

Ich habe viele Dinge ausprobiert - dieser Thread hatte mehrere Vorschläge, die aber alle veraltet sind.

Wenn ich OneNote dazu bringen könnte, alle Seiten als einzelne DOCX-Dateien zu exportieren, wäre es leicht, Pandoc zu verwenden, um sie in einzelne Markdown-Dateien zu konvertieren. OneNote exportiert jedoch nur mehrere Seiten als einzelne Datei. Eine Möglichkeit wäre, einen Weg zu finden, den Export jeder einzelnen Seite einzeln zu automatisieren.

Eine andere Option ist, ganze Notebooks gleichzeitig als .docx-Dateien zu exportieren, sie mit Pandoc in markdown zu konvertieren und dann die Dateien aufzuteilen - aber es reicht mir nicht, wenn Sie einen Regex-Assistenten verwenden, um csplit dazu zu bringen, die Dateien nur mit der Basis zu schneiden reguläre Ausdrücke und nicht genug eines awk-Assistenten, um Dateien mit dem korrekten und vollständigen regulären Ausdruck auszugeben.

Kann mir jemand dabei helfen?

10

1 Antwort auf die Frage

7
Anders

Ich fand schließlich eine Export-Pipeline, aber es war ein Schmerz. Hier sind meine Notizen dazu:

Arbeitsablauf:

  1. Schalten Sie Ihre Netzwerke aus, um zu verhindern, dass OneNote nach jedem Export eine längere OneDrive-Synchronisierung durchführt.

  2. Erweitern Sie in der Liste Notizbücher das Notizbuch, um alle Registerkarten anzuzeigen.

  3. Klicken Sie mit der rechten Maustaste auf eine Registerkarte und klicken Sie auf "Exportieren ...".

  4. Klicken Sie auf die Dateityp-Dropdown-Liste und drücken Sie M, um das .docxFormat auszuwählen . Drücken Enter, um es auszuwählen.

  5. Drücken Sie Entererneut, um die exportierte Datei zu speichern.

  6. Wiederholen Sie die Schritte 2 bis 5 für jede Registerkarte im Notizbuch.

  7. Richten Sie Pandoc ein und öffnen Sie ein PowerShell- oder Cmd-Fenster.

  8. cd in das Verzeichnis, in dem sich die exportierten .docxDateien befinden.

  9. .docxVerwenden Sie für jede exportierte Datei den folgenden Pandoc-Befehl, um sie in Markdown (durch journalden 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 .docxDatei zu extrahieren und diese in den Standardunterordner (standardmäßig "media") zu speichern. --wrap=preserveteilt pandoc mit, dass die Ausgabedatei nicht mit Zeilenumbrüchen festgeschrieben wird (dies ist die Standardeinstellung). Das nächste Feld ist der eingegebene Dateiname und -osteht für 'Ausgabe', ebenso journal.mdder 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.)

  10. 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, in journaldem die endgültigen getrennten Seiten als einzelne .md-Dateien gespeichert werden.

  11. Wenn sich Bilder in der .docxDatei befanden, 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. (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 .docxDateien mit Bildern: Ein Ordner wird automatisch für Sie erstellt.)

  12. Öffnen Sie ein Bash-Terminal und wechseln Sie in das Verzeichnis, in dem sich die .mdDatei 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).

  13. 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.

  14. Passen Sie den folgenden Befehl an und führen Sie ihn für jede .mdDatei 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.mdist der Name unserer Markdown-Datei (im aktuellen Verzeichnis mit gekennzeichnet ./), das zweite Vorkommen von journal(after --prefix=') ist der Name unseres Unterordners, der die aufgeteilten Dateien enthält, und journalentrywie jede Datei benannt wird (gefolgt von einer Indexnummer).

    Wenn Sie den Befehl verstehen möchten, wird Folgendes erklärt: Es werden --keep-filesimmer 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). --prefixLegt das Benennungsschema der Ausgabedateien fest. --suffix-formaterlaubt uns, unsere Dateierweiterung .mdfestzulegen ( in diesem Fall), aber wir müssen %ifü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.

  15. Ziehen Sie die Dateien .docxund .mdin einen Ordner. Sagen Sie 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 Konvertierungsvorgangs aufgetreten ist. Wenn Sie sie jetzt in den Zwischenordner verschieben, besteht keine Chance, dass Sie vergessen, wo wir uns befinden und Schritte wiederholen.

  16. Wiederholen Sie die Schritte 9 bis 14 für jede .docxDatei, die Sie aus OneNote exportiert haben.

  17. Jetzt haben Sie für jedes Register einen Ordner mit einer Reihe von separaten .mdDateien, einen für jede Seite! Plus ein mediaOrdner in jedem Unterordner, der Bilder auf der Registerkarte OneNote hatte.

  18. Ich empfehle Ihnen, jedes Ihrer OneNote-Notizbücher als .mhtDatei (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 .mhtDatei aussehen sollten . Außerdem würde ich empfehlen, jedes Ihrer OneNote-Notizbücher als .onepkgDatei (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 .mhtDatei beispielsweise auch die ursprüngliche Formatierung fehlt, die Sie wiederherstellen möchten).

  19. 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.

  20. 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).

  21. 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.shBefehl mit dem rename-files-to-first-line.shBefehl 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 mvBefehl in rename-files-to-first-linewird 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.

  22. 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!

Funktioniert nicht, wenn Sie Anhänge in OneNote haben Nikhil vor 5 Jahren 0
Wow, was für ein Durcheinander. Ich hätte nie mit dieser Software Notizen machen sollen. Danke, dass Sie das alles aufgeschrieben haben! Beachten Sie, dass es bis heute keine Exportfunktion für OneNote unter macOS gibt. slhck vor 5 Jahren 0