تحويل مستند واحد Word إلى Markdown يستغرق ثواني مع 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 الكتلة Word إلى Markdown التحويل.
عندما تحتاج إلى تحويل المجموعة
إذا كان لديك:
- مكتبة وثائق قديمة في Word
- التقارير الأسبوعية التي تحتاج إلى أن تصبح Markdown صفحات
- مشروع هجرة المحتوى (Word → موقع ثابت، ويكي، أو قاعدة المعرفة)
- العديد من المؤلفين يرسلون Word الوثائق التي تنشر إلى Markdown
تحتاج إلى تحويل الدفعات. في الملفات الفردية WordToMD لا يزال الخيار الأسهل.
Pandoc: العمود الفقري لتحويل الدفعات
Pandoc هي أفضل أداة لتحويل الدفعات. قم بتثبيته مرة واحدة، ثم نصه له لأي حجم من الملفات.
نص Windows PowerShell
# 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."
أطلقها:
.\convert-all.ps1
برنامج Bash (ماكوس / لينكس)
#!/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."
أطلقها:
chmod +x convert-all.sh
./convert-all.sh
كتابة بايثون لحالات الاستخدام المتقدمة
باثون python-docx المكتبة و Pandoc العملية الفرعية يمنح المزيد من السيطرة:
#!/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()
أطلقها:
python3 batch_convert.py
إضافة المادة الأمامية تلقائياً
مولدات الموقع الثابتة تحتاج إلى المادة الأمامية. نص بايثون أعلاه يضيف المادة الأساسية. للحصول على مقاربة أكثر اكتمالاً، استخدم عنوان المستند من العنوان الأول 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"
ثم قم بتحديث add_frontmatter دعوة لاستخدام العنوان المستخرج.
الحفاظ على هيكل الدليل
عند تحويل هيكل مجلد متضمن، حافظ على التسلسل الهرمي:
# 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
معالجة الصور في تحويل الدفعات
مع --extract-media، Pandoc يستخرج كل الصور إلى مجلد. التحدي: ملفات .docx متعددة قد تنتج ملفات ذات أسماء متطابقة (e.g. image1.png) استخدم دليل فرعي لكل وثيقة:
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
أداء للمجموعات الكبيرة
لمجموعات المستندات الكبيرة (أكثر من 100 ملف):
- Pandoc يعالج ملف واحد لكل استدعاء هذا جيد لـ ~ 100 ملف
- لـ 500 + ملف ، استخدم GNU Parallel للتعديل المتزامن:
find . -name "*.docx" | \
parallel pandoc {} -t gfm --wrap=none -o {.}.md
قم بتثبيت GNU Parallel: brew install parallel / sudo apt install parallel
التحقق من جودة الناتج
بعد تحويل الدفعات، تحقق من الناتج:
- عينة عشوائية افتح 5-10 ملفات محوّلة ومقارنة مع الملفات الأصلية
- عدد الجداول عُد الجداول في المستند وتحقق من أنها كلها تم تحويلها
- مستويات الرأس ضمان الحفاظ على التسلسل الهرمي للمقالات
- الروابط المكسورة البحث عن Markdown روابط وتحقق أنها تحل
كتابة فحص بسيطة:
# 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
هل يمكنني تحويل ملفات .doc (صيغة Word القديمة) في مجموعات؟
احفظهم كـ .docx أولاً يمكن لـ Word ميزة الماكرو أن تقوم بحفظ المجموعات: الأدوات → الماكروات → تشغيل ماكرو SaveAs عبر جميع الملفات المفتوحة. يمكن لـ LibreOffice أيضًا تحويل المجموعات عبر سطر الأوامر: soffice --headless --convert-to docx *.doc.
كم يستغرق تحويل الدفعات؟ Pandoc يحول وثيقة نموذجية من 10 صفحات في أقل من ثانية. مئة ملف = حوالي 1-2 دقائق. الوثائق الكبيرة جداً (أكثر من 100 صفحة) تستغرق وقتاً أطول.
لقد حصلت على أمر "باندوك" غير موجود في نصي.
تأكد من أن Pandoc مُثبت وعلى PATH الخاص بك. أركض which pandoc (ماكوس/لينكس) أو Get-Command pandoc (PowerShell) للتحقق.
هل يمكنني تشغيل تحويل الدفعات على ويندوز دون باورشيل؟
نعم استخدم a .bat ملف أو تثبيت Git Bash لتشغيل نصوص bash.
أدلة ذات صلة
- Pandoc Word إلى Markdown إشارة كاملة Pandoc
- Word إلى مولد موقع ثابت نشر المحتوى المتحول
- Word إلى GitBook الهجرة إلى GitBook
النتيجة
تحويل البطاقة Word إلى Markdown هو مباشر مع Pandoc وبضعة خطوط من النص. نصوص PowerShell و Bash المذكورة أعلاه تتعامل مع معظم السيناريوهات. للمادة الأمامية المخصصة، الحفاظ على هيكل الدليل، أو معالجة الصور، يمنحك نص بايثون السيطرة الكاملة. لتحويلات لمرة واحدة WordToMD لا يزال الخيار الأسرع.