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.
Die andere Antwort hat es für mich nicht gekürzt, da meine Notizen keine Journaleinträge sind, aber ich habe eine Lösung mit der Graph-API von Microsoft gefunden . Dies bedeutet, dass Sie OneNote nicht einmal ausführen müssen. Es ist lediglich erforderlich, dass Ihre Notizen mit Ihrem Microsoft-Konto synchronisiert werden. Anschließend können Sie Ihre Notizen als perfekt formatiertes HTML abrufen (das Sie im Browser anzeigen oder in das von Ihnen bevorzugte Format konvertieren können mit Pandoc).
Die Magie geschieht in diesem Python-Skript . Es wird ein einfacher lokaler Webserver ausgeführt, über den Sie sich bei Ihrem Microsoft-Konto anmelden können. Anschließend werden alle Ihre Notizen als HTML sowie Bilder und Anhänge in ihren ursprünglichen Formaten heruntergeladen und in einer Dateihierarchie gespeichert, wobei die ursprüngliche Struktur beibehalten wird Ihrer Notizbücher (einschließlich Seitenreihenfolge und Unterseiten).
Bevor Sie das Skript ausführen können, müssen Sie eine "App" in Microsoft Azure registrieren, damit sie auf die Graph-API zugreifen kann:
http://localhost:5000/getToken
. Registrieren.client_id
am Anfang des Python-Skripts ein.secret
im Python-Skript ein.Dann müssen Sie die Python-Abhängigkeiten installieren. Stellen Sie sicher, dass Python 3.7 (oder neuer) installiert ist, und installieren Sie die Abhängigkeiten mit dem Befehl
pip install flask msal requests_oauthlib
.Jetzt können Sie das Skript ausführen. Navigieren Sie in einem Terminal zu dem Verzeichnis, in dem sich das Skript befindet, und führen Sie es mit aus
python onenote_export.py
. Dadurch wird ein lokaler Webserver auf Port 5000 gestartet.Navigieren Sie in Ihrem Browser zu http: // localhost: 5000 und melden Sie sich bei Ihrem Microsoft-Konto an. Wenn Sie dies zum ersten Mal tun, müssen Sie auch akzeptieren, dass die App Ihre OneNote-Notizen lesen kann. (Dadurch erhalten Dritte keinen Zugriff auf Ihre Daten, solange Sie die Client-ID und das Geheimnis, die Sie im Azure-Portal erstellt haben, nicht freigeben.) Danach kehren Sie zum Terminal zurück, um den Fortschritt zu verfolgen.
Hinweis: Microsoft begrenzt die Anzahl der Anfragen, die Sie innerhalb eines bestimmten Zeitraums ausführen können. Wenn Sie viele Notizen haben, werden im Terminal möglicherweise folgende Meldungen angezeigt:
Too many requests, waiting 20s and trying again.
Dies ist kein Problem, bedeutet jedoch, dass der gesamte Vorgang eine Weile dauern kann. Außerdem kann die Anmeldesitzung nach einer Weile ablaufen, was zu einem führtTokenExpiredError
. In diesem Fall laden Sie einfach http: // localhost: 5000 neu und das Skript wird fortgesetzt (wobei die bereits heruntergeladenen Dateien übersprungen werden).quelle
pandoc --from html --to markdown -o output.md input.html
. B. ). Es ist jedoch zu beachten, dass nicht alle OneNote-Seiten im Markdown perfekt dargestellt werden können, sodass Sie möglicherweise einige Formatierungsdetails verlieren. Außerdem unterstützt pandoc verschiedene Arten von Markdowns. Lesen Sie daher möglicherweise die Dokumentation, um eine für Ihre Verwendung geeignete zu finden.Um Ihre OneNote-Seiten in einzelne Markdowns (
.md
) zu exportieren , sollten Sie Joplin und Evernote installieren .Wie in diesem Link vorgeschlagen , importieren Sie zuerst die Notizen in Evernote. Exportieren Sie dann alle Notizen
.enex
aus Evernote in eine Datei und importieren Sie sie in Joplin.Joplin hat die Möglichkeit, die Notizen als
.md
Dateien zu exportieren .Hinweis: Ich empfehle, vorab Flags in Evernote zu verwenden, wenn Sie Ihre Notizen gruppieren möchten, da sich die Evernote-Methode zum Aufrechterhalten der Hierarchie zwischen Notizen von OneNote unterscheidet.
quelle