Umwandlung docx zu md (markdown)

nutzerbename

Cadet 4th Year
Registriert
Dez. 2018
Beiträge
94
Hallo Leute,

ich hätte gerne mal Eure Hilfe: Ich möchte eine recht große Sammlung an word-Dokumenten (docx) in markdown (md) umwandeln. - Zu dem Zweck die Inhalte dann in Obsidian nutzen zu können, welches ich in Zukunft als Notiz-Software nutzen möchte.

Ich hab jetzt schon ziemlich lange rumprobiert, u.a. mit pandoc, komme aber nicht so recht voran. - Was auch daran liegt, dass ich mich mit Computern, Software, etc. nicht gut auskenne.
Meine Sammlung an docx-Dokumenten befindet sich in zahlreichen Ordnern/Unterordnern. Die Dokumente an sich sind ausschließlich Text, der mithilfe von Aufzählungszeichen ("bullet points") gegliedert ist.

Daher meine Fragen:
  • Wie könnte ich möglichst ganze Ordner voll von docx-Dokumenten "auf einen Schlag" in markdown-Dokumente umwandeln?
  • Falls man die Dokumente doch einzeln umwandeln muss: Gibt es eine schnellere/einfachere Methode als in pandoc für jedes Dokument Befehle einzugeben? - Das liegt mir nicht so und ist mir zu mühsam
  • Gut wäre, wenn die Formatierung des Textes (also die bullet points) möglichst unverändert übernommen werden

Also, falls Ihr da einen Tipp für mich habt, wie man hier als Normalsterblicher zum Ziel kommen könnte, wäre ich Euch echt dankbar!
Vielen Dank!
 
nutzerbename schrieb:
Falls man die Dokumente doch einzeln umwandeln muss: Gibt es eine schnellere/einfachere Methode als in pandoc für jedes Dokument Befehle einzugeben? - Das liegt mir nicht so und ist mir zu mühsam
kannst du nicht einfach mit Powershell oder Bash ueber alle DOCX Dateien iterieren und dann Pandoc aufrufen damit? Oder halt alle Dateien in einem einzelnen Pandoc Aufruf uebergeben, das geht auch, Whitespace zwischen den Dateien dann
nutzerbename schrieb:
Wie könnte ich möglichst ganze Ordner voll von docx-Dokumenten "auf einen Schlag" in markdown-Dokumente umwandeln?
pro Dokument troztdem eine Markdown Datei? Dann mit --file-scope
 
  • Gefällt mir
Reaktionen: nutzerbename
@abcddcba
Danke für Deine Antwort! Das klingt danach, dass es einen Weg geben müsste. Aber die Anweisungen übersteigen leider meine Fähigkeiten (bin kein Computer-Experte, Programmierer, etc.).
Denkst Du, es gibt noch irgendwo eine simple Schritt-für-Schritt-Anleitung?
 
Ich habe folgende StackOverflow-Antwort hierzu gefunden: https://stackoverflow.com/a/59685850

Du musst den Pandoc-Aufruf dann etwas anpassen, aber in der Variable "$_.FullName" ist wohl immer der Name der Markdown-Datei dann enthalten.

Also in deinem Fall müsste es ungefähr so aussehen (ungetestet):

Code:
Get-ChildItem -File -Recurse -Filter *.docx | ForEach-Object {
  pandoc -o ($_.FullName + '.md') $_.FullName
}
 
@cx01
Danke Dir!
Und welche Variable steht für den Quell-Ordner (ich geh jetzt mal davon aus, dass ich einen gesamten Ordner mit docx Dateien auf einmal umwandeln kann?)
 
Er macht es im aktuellen Ordner, in welchem Powershell sich befindet. Du kannst ja im Windows-Explorer in den gewünschten Ordner gehen und dann den Menüpunkt "Powershell öffnen" wählen.
 
@cx01
Ok, danke! Ich versuche gerade rum, sorry wegen der dummen Fragen.

Hab jetzt im Windows Explorer den Ordner mit den docx-Dateien geöffnet, welche ich in md umwandeln möchte.
Oben in den Adress-Pfad hab ich Powershell eingegeben und Enter gedrückt. Dann öffnet sich Powershell.
In Powershell steht dann der Pfad des aktuell geöffneten Ordners: PS C:\....\....\

So, und was genau muss ich jetzt machen?
Wie kommt jetzt das hier ins Spiel:
cx01 schrieb:
Get-ChildItem -File -Recurse -Filter *.docx | ForEach-Object { pandoc -o ($.FullName + '.md') $.FullName }

Danke Dir!
 
Das musst du einfach in die Powershell kopieren, also mach es in die Zwischenablage und dann drück rechte Maustaste über dem Powershell Fenster.

Ich würde aber empfehlen, vorher ein Backup zu machen vom gesamten Ordner.
 
  • Gefällt mir
Reaktionen: nutzerbename
ok, ich kopiere das dann einfach in die Powershell, direkt unter dem, was in der poweshell schon drin steht.
cx01 schrieb:
Get-ChildItem -File -Recurse -Filter *.docx | ForEach-Object { pandoc -o ($.FullName + '.md') $.FullName }
und an dem Text brauch ich nix ändern? Einfach genau so übernehmen?
 
Ja, aber ich kann nicht zu 100% garantieren, dass es dann das macht, was du möchtest. Daher halt besser ein Backup machen.

Aber solange du in der Powershell im richtigen Ordner bist, wird er zumindest nichts in übergeordneten Ordnern verändern.
 
  • Gefällt mir
Reaktionen: nutzerbename
Ja, ich mach in Kürze von allem ein Backup und dann probier ichs einfach.
Danke Dir schon mal soweit!
 
Hab das jetzt mal versucht und bekomme eine Fehlermeldung in powershell:
"'Die Benennung "$ .FullName" wurde nicht als Name eines Cmdlet, einer Funktion, ....erkannt"

Was könnte ich versuchen?
Danke!
 
Es muss "$_.FullName" sein, irgendwie ist der Unterstrich bei dir verloren gegangen.
 
  • Gefällt mir
Reaktionen: nutzerbename
@cx01
Es funktioniert beachtlich gut. - Werd nur noch gucken, ob die Formatierung (Bullet Points) noch besser übernommen werden kann. Bin aber auch so schon sehr zufrieden.
Vielen Dank für Deine geduldige Hilfe! Habe echt lange gesucht und Du hast mir die Lösung unkompliziert präsentiert.
 
  • Gefällt mir
Reaktionen: cx01
Zurück
Oben