import os
from pathlib import Path
from markitdown import MarkItDown

def batch_convert():
    # 1. 根据你的截图设置输入路径
    input_dir = Path(r"D:\_AI知识库\word文档")
    
    # 2. 自动创建一个平级的输出目录，用来存放纯净的 md 文件
    output_dir = Path(r"D:\_AI知识库\md文档")
    
    # 初始化 MarkItDown
    md = MarkItDown()
    
    # 统计数据
    success_count = 0
    fail_count = 0

    print(f"🔍 开始扫描目录: {input_dir}")
    
    # 3. rglob("*.docx") 会递归遍历包括所有子文件夹在内的所有 Word 文档
    for docx_file in input_dir.rglob("*.docx"):
        # 计算相对路径，以便在输出目录中完美复刻你的子文件夹结构 (例如保留 03.EG4)
        relative_path = docx_file.relative_to(input_dir)
        md_file = output_dir / relative_path.with_suffix(".md")
        
        # 确保输出路径的子文件夹已创建
        md_file.parent.mkdir(parents=True, exist_ok=True)
        
        print(f"⏳ 正在转换: {relative_path.name} ...", end=" ")
        
        try:
            # 4. 核心转换代码（默认抛弃复杂图片，保留纯文本和硬件表格）
            result = md.convert(str(docx_file))
            
            # 5. 写入 Markdown 文件，统一使用 utf-8 编码防乱码
            with open(md_file, "w", encoding="utf-8") as f:
                f.write(result.text_content)
                
            print("✅ 成功")
            success_count += 1
            
        except Exception as e:
            # 加入异常捕获，防止某个损坏的 Word 文件导致整个程序崩溃
            print(f"❌ 失败 (错误信息: {e})")
            fail_count += 1

    print("\n" + "=" * 40)
    print(f"🎉 转换全部结束！成功: {success_count} 个，失败: {fail_count} 个。")
    print(f"📂 干净的 Markdown 知识库已保存在: {output_dir}")

if __name__ == "__main__":
    batch_convert()