V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
lllsj
V2EX  ›  程序员

请问有没有什么办法能批量把 docx 格式转成 doc 格式

  •  
  •   lllsj · 1 天前 · 2253 次点击
    最进手头有一些文档需要进行格式转换,希望最好有免费批量一键转换的方法,看了市面上的 API 基本都是国外且收费的,感觉付费不是很方便,所以想先问一下各位大佬有没有什么好点的解决方案。
    21 条回复    2025-06-16 09:52:17 +08:00
    xinge666
        1
    xinge666  
       1 天前 via iPhone
    Leibniz007
        2
    Leibniz007  
       1 天前   ❤️ 1
    libreoffice 可以,有 cli ,配合 find 或者 ls 管道跑就行
    liangdi
        3
    liangdi  
       1 天前
    安装 libreoffice
    参考命令, 我本机测试 ok
    ```bash
    libreoffice --headless --convert-to doc --outdir ./out *.docx
    ```
    lllsj
        4
    lllsj  
    OP
       1 天前
    @liangdi #3 好的,感谢,我试试
    lllsj
        5
    lllsj  
    OP
       1 天前
    @Leibniz007 #2 嗯嗯,我试一下
    lllsj
        6
    lllsj  
    OP
       1 天前
    @xinge666 #1 我这边还是尽量想通过本地的服务去进行转换,后面想写个脚本什么的,使用这个网站也只能手动批量去选择吧😂
    ysc3839
        7
    ysc3839  
       1 天前 via Android
    Windows 下可以调用 Office 另存为,WPS 估计也行。其他系统比较尴尬。
    lllsj
        8
    lllsj  
    OP
       1 天前
    @ysc3839 #7 是的,我用的 mac ,这上面的 office 就很蹩脚,而且我需要批量的转换,好像 office 不支持批量的
    ysc3839
        9
    ysc3839  
       1 天前 via Android
    @lllsj macOS 可以试试用 Apple Script 控制 Office 转换
    lllsj
        10
    lllsj  
    OP
       1 天前
    @ysc3839 #9 好的,我看看
    lqw3030
        11
    lqw3030  
       1 天前
    java 可以用 poi 库进行转换
    yanqiyu
        12
    yanqiyu  
       1 天前
    windows 上 word 的大部分功能应该可以用 PowerShell 操作,写个脚本调用 headless 的 word 来打开文档并另存为就可以了。

    这一点上 PowerShell 的面向对象特征让它行为特别像正儿八经的编程语言,不得不说虽然语法难看但是确实炫酷
    kkocdko
        13
    kkocdko  
       1 天前   ❤️ 3
    用自带的 VBA 转。最好是用 MS Office ,用别的可能会出现细微的格式变动问题。虽然这个格式变动谁都没法保证,但是 MS Office 自己给自己转应该是最稳定的了。

    见我的博客 : https://kkocdko.site/post/201806261915 。按照代码里的注释替换一下就行,例如输入改成 docx ,输出改成 0 ( doc )这样。
    fyq
        14
    fyq  
       1 天前
    楼上正解,让 AI 给你写一个 VBA 脚本,执行就行
    evejwp
        15
    evejwp  
       1 天前
    windows 下可以用脚本。
    zqqian
        16
    zqqian  
       1 天前
    50 块钱雇个大学生用 word 一个一个另存为 doc
    natsukage
        17
    natsukage  
       1 天前
    ```python
    import os
    import win32com.client

    def batch_convert_docx_to_doc(folder_path):
    """
    批量将文件夹中的 .docx 文件转换为 .doc 格式

    参数:
    folder_path (str): 包含 .docx 文件的文件夹路径
    """
    # 启动 Word 应用程序
    print("正在启动 Word 应用程序...")
    word_app = win32com.client.Dispatch("Word.Application")
    word_app.Visible = False # 后台运行,不显示界面

    try:
    # 获取文件夹中的所有文件
    files = os.listdir(folder_path)
    docx_files = [f for f in files if f.lower().endswith('.docx')]

    if not docx_files:
    print("未找到需要转换的 .docx 文件")
    return

    print(f"找到 {len(docx_files)} 个 .docx 文件,开始转换...")

    # 逐个转换文件
    for filename in docx_files:
    # 构建完整路径
    docx_path = os.path.join(folder_path, filename)
    doc_path = os.path.join(folder_path, filename[:-5] + ".doc")

    # 检查目标文件是否已存在
    if os.path.exists(doc_path):
    print(f"跳过 {filename}(目标文件已存在)")
    continue

    try:
    # 打开 .docx 文件
    document = word_app.Documents.Open(docx_path)

    # 保存为 .doc 格式( FileFormat=0 表示 Word 97-2003 文档格式)
    document.SaveAs(doc_path, FileFormat=0)

    # 关闭文档
    document.Close()

    print(f"✅ 转换完成: {filename} → {os.path.basename(doc_path)}")

    except Exception as e:
    print(f"❌ 转换失败: {filename} - {str(e)}")

    finally:
    # 确保关闭 Word 应用程序
    word_app.Quit()
    print("Word 应用程序已关闭")

    def main():
    """主函数"""
    # 设置要处理的文件夹路径
    target_folder = os.path.join(os.getcwd(), "organized_files")

    # 检查文件夹是否存在
    if not os.path.exists(target_folder):
    print(f"错误:文件夹 '{target_folder}' 不存在")
    return

    print(f"开始处理文件夹: {target_folder}")

    # 执行批量转换
    batch_convert_docx_to_doc(target_folder)

    print("批量转换完成!")

    if __name__ == "__main__":
    main()
    ```

    大概这种感觉吧(随便写的,有点丑陋,我让 cursor 给加了注释,不过核心思路应该很简单)
    就是调用本地安装的 microsoft word 进行处理。
    realpg
        18
    realpg  
       1 天前
    @yanqiyu #12
    这不是 powershell 的能力
    因为吧 其实说出来难以置信 office 从 98 版本开始 就是完全的 com 组件的核心
    你用的 office 只是个 gui 它甚至未完全实现 office 组件的全部功能
    office 要发挥 100%功能甚至必须自己编程去调用那些 office gui 未实现的功能...

    只有编程去调用才能实现完全功能
    beiji2027
        19
    beiji2027  
       17 小时 52 分钟前
    pandoc ?自动转的都不靠谱。要么就用 docx ;要么用 Office 转存最靠谱。
    kenyons
        20
    kenyons  
       3 小时 34 分钟前
    Office Tool Plus 似乎可以?
    lllsj
        21
    lllsj  
    OP
       2 小时 37 分钟前
    @beiji2027 是的,这几天经过测试还是得通过 word 转换格式出问题的概率最小
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3386 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 04:30 · PVG 12:30 · LAX 21:30 · JFK 00:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.