Konvertieren eines einzelnen Word Dokument zu Markdown dauert Sekunden mit WordToMD. But what if you have 50, 100, or 500 .docx files to convert? That’s where batch conversion scripts come in. This guide covers the fastest approaches for Umwandlung von bulk Word in Markdown.
Wenn Sie eine Batch-Umwandlung benötigen
Wenn Sie:
- Eine alte Dokumentationsbibliothek im Word-Format
- Wöchentliche Berichte, die Markdown-Seiten werden müssen
- Ein Projekt zur Migration von Inhalten (Word → statische Website, Wiki oder Wissensdatenbank)
- Mehrere Autoren, die Word-Dokumente einreichen, die an Markdown veröffentlicht werden
Du brauchst eine Batch-Umwandlung. Für einzelne Dateien WordToMD bleibt die einfachste Option.
Pandoc: Die Rückseite der Batch-Umwandlung
Pandoc ist das beste Werkzeug für die Batch-Umwandlung. Installieren Sie es einmal, dann schreiben Sie es für jedes Volumen von Dateien.
Das Windows PowerShell-Skript
# convert-all.ps1
# Converts all .docx files in current directory to .md
$docxFiles = Get-ChildItem -Path "." -Filter "*.docx" -Recurse
foreach ($file in $docxFiles) {
$outputPath = [System.IO.Path]::ChangeExtension($file.FullName, ".md")
pandoc `
$file.FullName `
-t gfm `
--wrap=none `
--extract-media="./media" `
-o $outputPath
Write-Host "✓ $($file.Name) → $([System.IO.Path]::GetFileName($outputPath))"
}
Write-Host "Done. Converted $($docxFiles.Count) files."
Lassen Sie es laufen:
.\convert-all.ps1
Bash-Skript (macOS / Linux)
#!/bin/bash
# convert-all.sh
# Converts all .docx files recursively
OUTPUT_DIR="./markdown-output"
mkdir -p "$OUTPUT_DIR"
find . -name "*.docx" | while read -r docx_file; do
filename=$(basename "$docx_file" .docx)
output="$OUTPUT_DIR/$filename.md"
pandoc \
"$docx_file" \
-t gfm \
--wrap=none \
--extract-media="$OUTPUT_DIR/media" \
-o "$output"
echo "✓ $docx_file → $output"
done
echo "Done."
Lassen Sie es laufen:
chmod +x convert-all.sh
./convert-all.sh
Python-Skript für fortgeschrittene Anwendungsfälle
Pythons python-docx Bibliothek und Pandoc-Unterprozess-Ansatz gibt mehr Kontrolle:
#!/usr/bin/env python3
"""
batch_convert.py — Convert all .docx files to Markdown with frontmatter injection
"""
import os
import subprocess
import sys
from pathlib import Path
from datetime import datetime
INPUT_DIR = Path("./word-docs")
OUTPUT_DIR = Path("./markdown-output")
OUTPUT_DIR.mkdir(exist_ok=True)
def convert_file(docx_path: Path) -> Path:
"""Convert a .docx file to GFM Markdown using Pandoc."""
output_path = OUTPUT_DIR / docx_path.with_suffix(".md").name
result = subprocess.run(
[
"pandoc",
str(docx_path),
"-t", "gfm",
"--wrap=none",
f"--extract-media={OUTPUT_DIR}/media",
"-o", str(output_path)
],
capture_output=True,
text=True
)
if result.returncode != 0:
print(f" ERROR: {result.stderr}", file=sys.stderr)
return None
return output_path
def add_frontmatter(md_path: Path, title: str) -> None:
"""Prepend YAML frontmatter to a Markdown file."""
frontmatter = f"""---
title: "{title}"
date: {datetime.now().strftime('%Y-%m-%d')}
draft: false
---
"""
content = md_path.read_text(encoding="utf-8")
md_path.write_text(frontmatter + content, encoding="utf-8")
def main():
docx_files = list(INPUT_DIR.glob("**/*.docx"))
if not docx_files:
print(f"No .docx files found in {INPUT_DIR}")
return
print(f"Converting {len(docx_files)} files...")
success = 0
for docx_path in docx_files:
print(f" Converting: {docx_path.name}")
output_path = convert_file(docx_path)
if output_path:
# Use filename (without extension) as title, replace hyphens/underscores
title = docx_path.stem.replace("-", " ").replace("_", " ").title()
add_frontmatter(output_path, title)
print(f" ✓ → {output_path.name}")
success += 1
else:
print(f" ✗ Failed: {docx_path.name}")
print(f"\nDone: {success}/{len(docx_files)} files converted.")
if __name__ == "__main__":
main()
Lassen Sie es laufen:
python3 batch_convert.py
Automatisches Hinzufügen von Vorderseiten
Static-Site-Generatoren brauchen Frontmatter. Das Python-Skript oben fügt grundlegende Vormaterialien hinzu. Für einen vollständigen Ansatz entnehmen Sie den Titel des Dokuments aus der ersten Überschrift H1:
def extract_title(md_content: str) -> str:
"""Extract the first H1 heading as the title."""
for line in md_content.splitlines():
if line.startswith("# "):
return line[2:].strip()
return "Untitled"
Dann aktualisieren Sie die add_frontmatter Aufruf zur Verwendung des extrahierten Titels.
Bewahrung der Verzeichnisstruktur
Bei der Konvertierung einer verschachtelten Ordnerstruktur wird die Hierarchie beibehalten:
# Bash: preserve subdirectory structure
find ./word-docs -name "*.docx" | while read -r docx; do
# Calculate relative path
rel_path="${docx#./word-docs/}"
output_dir="./markdown-output/$(dirname "$rel_path")"
mkdir -p "$output_dir"
output="$output_dir/$(basename "$docx" .docx).md"
pandoc "$docx" -t gfm --wrap=none -o "$output"
echo "✓ $rel_path"
done
Bildverarbeitung in der Batch-Konvertierung
Mit --extract-mediaPandoc extrahiert alle Bilder in einen Ordner. Die Herausforderung: Mehrere .docx-Dateien können Dateien mit identischen Namen erzeugen (e.g., image1.png) sind. Verwenden Sie ein Unterverzeichnis pro Dokument:
for docx_file in *.docx; do
slug="${docx_file%.docx}"
mkdir -p "./media/$slug"
pandoc "$docx_file" \
-t gfm \
--wrap=none \
--extract-media="./media/$slug" \
-o "$slug.md"
done
Leistung für große Sets
Für große Dokumentensätze (100+ Dateien):
- Pandoc verarbeitet eine Datei pro Anrufung das ist in Ordnung für bis zu ~100 Dateien
- Für mehr als 500 Dateien verwenden Sie GNU Parallel für die gleichzeitige Verarbeitung:
find . -name "*.docx" | \
parallel pandoc {} -t gfm --wrap=none -o {.}.md
Installieren Sie GNU Parallel: brew install parallel / sudo apt install parallel
Validierung der Ausgangsqualität
Nach der Batch-Konvertierung überprüfen Sie Ihren Ausgang:
- Zufällige Stichprobe Öffnen Sie 5-10 konvertierte Dateien und vergleichen Sie mit den Originalen
- Tabellenzahl Zählen Sie Tabellen in einem Dokument und überprüfen Sie, ob sie alle konvertiert wurden
- Überschwemmungsniveaus Gewährleistung der Wahrung der Überschriftenhierarchie
- Gebrochene Verbindungen Suchen Sie nach Markdown-Links und überprüfen Sie, ob sie gelöst werden
Ein einfaches Check-Skript:
# Count files with no headings (might indicate conversion failure)
for md in ./markdown-output/*.md; do
if ! grep -q "^#" "$md"; then
echo "No headings found: $md"
fi
done
FAQ
Kann ich .doc-Dateien (altes Word-Format) in Gruppen konvertieren?
Speichern Sie sie als .docx zuerst. Words Makro-Funktion kann Batch-Speichern: Tools → Makros → ein SaveAs-Makro über alle geöffneten Dateien ausführen. LibreOffice kann auch Batch-Konvertieren über die Befehlszeile: soffice --headless --convert-to docx *.doc.
Wie lange dauert die Batch-Umwandlung? Pandoc konvertiert ein typisches 10-seitiges Dokument in weniger als einer Sekunde. 100 Dateien = etwa 1-2 Minuten. Sehr große Dokumente (100+ Seiten) dauern länger.
Ich bekomme pandoc: Befehl nicht gefunden in meinem Skript.
Stellen Sie sicher, dass Pandoc installiert ist und auf Ihrem PATH. Lauf ! which pandoc (macOS/Linux) oder Get-Command pandoc (PowerShell) zu überprüfen.
Kann ich die Batch-Konvertierung auf Windows ohne PowerShell ausführen?
Ja Verwenden Sie a .bat File oder installieren Sie Git Bash, um die Bash-Skripte auszuführen.
Verwandte Leitfäden
- Pandoc Word bis Markdown Vollständige Pandoc-Verweisung
- Word zum statischen Standortgenerator Veröffentlichung konvertierter Inhalte
- Word bis GitBook Auswanderung nach GitBook
Schlußfolgerung
Batch Word zu Markdown Umwandlung ist einfach mit Pandoc und ein paar Zeilen Skript. Die oben genannten PowerShell- und Bash-Skripte behandeln die meisten Szenarien. Für benutzerdefinierte Front-Matter, Verzeichnis-Struktur-Erhaltung oder Bild-Handhabung, das Python-Skript gibt Ihnen volle Kontrolle. Für einmalige Umwandlungen WordToMD bleibt die schnellste Option.