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

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

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

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

    见我的博客 : https://kkocdko.site/post/201806261915 。按照代码里的注释替换一下就行,例如输入改成 docx ,输出改成 0 ( doc )这样。
    fyq
        14
    fyq  
       10 天前
    楼上正解,让 AI 给你写一个 VBA 脚本,执行就行
    evejwp
        15
    evejwp  
       10 天前
    windows 下可以用脚本。
    zqqian
        16
    zqqian  
       10 天前
    50 块钱雇个大学生用 word 一个一个另存为 doc
    natsukage
        17
    natsukage  
       10 天前
    ```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  
       9 天前
    @yanqiyu #12
    这不是 powershell 的能力
    因为吧 其实说出来难以置信 office 从 98 版本开始 就是完全的 com 组件的核心
    你用的 office 只是个 gui 它甚至未完全实现 office 组件的全部功能
    office 要发挥 100%功能甚至必须自己编程去调用那些 office gui 未实现的功能...

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