可批量将.doc转.docx:一、Word VBA宏自动遍历转换;二、PowerShell调用Word COM对象静默转换;三、LibreOffice命令行headless模式跨平台转换。

如果您需要将多个旧版 Word 文档(.doc)统一升级为新版兼容格式(.docx),但逐个手动另存为效率低下,则可以通过自动化方式实现批量转换。以下是实现此目标的多种方法:
一、使用 Word 内置的“另存为”宏配合 VBA 脚本
该方法利用 Word 的 Visual Basic for Applications 功能,编写一段可重复执行的脚本,自动遍历指定文件夹中的所有 .doc 文件并逐一另存为 .docx 格式,无需第三方工具且完全在原生环境中运行。
1、打开任意一个 Word 文档,按 Alt + F11 打开 VBA 编辑器。
2、在左侧“项目资源管理器”中右键“Normal”,选择“插入” → “模块”,新建一个空白模块。
3、将以下代码完整粘贴到编辑窗口中:
Sub BatchConvertDOCtoDOCX()
Dim doc As Document
Dim folderPath As String
Dim fileName As String
folderPath = "C:\YourFolder\"
fileName = Dir(folderPath & "*.doc")
Do While fileName ""
Set doc = Documents.Open(folderPath & fileName)
doc.SaveAs2 folderPath & Replace(fileName, ".doc", ".docx"), FileFormat:=wdFormatXMLDocument
doc.Close SaveChanges:=False
fileName = Dir
Loop
MsgBox "转换完成!"
4、将代码中 "C:\YourFolder\" 替换为实际存放 .doc 文件的本地路径,注意末尾保留反斜杠。
5、按 F5 运行宏,等待提示框弹出即表示全部转换完毕。
二、借助 PowerShell 命令行调用 Word COM 对象
该方法绕过图形界面,在 Windows 系统中通过 PowerShell 调用 Word 应用程序后台对象,对目标目录内所有 .doc 文件执行静默转换,适合处理大量文件且不希望弹出 Word 窗口的场景。
1、新建一个文本文件,将后缀名改为 .ps1,例如 convert.ps1。
2、用记事本打开该文件,输入以下内容:
$word = New-Object -ComObject Word.Application
$word.Visible = $false
$folderPath = "C:\YourFolder"
$files = Get-ChildItem -Path $folderPath -Filter "*.doc"
foreach ($file in $files) {
$doc = $word.Documents.Open($file.FullName)
$newPath = [System.IO.Path]::ChangeExtension($file.FullName, ".docx")
$doc.SaveAs2($newPath, 12)
$doc.Close()
}
$word.Quit()
3、将其中 "C:\YourFolder" 替换为实际路径,确保路径中不含中文或特殊符号。
4、以管理员身份运行 PowerShell,执行 Set-ExecutionPolicy RemoteSigned -Scope CurrentUser 允许本地脚本运行。
5、在 PowerShell 中输入完整脚本路径并回车,例如:& "D:\convert.ps1"。
三、使用 LibreOffice 命令行无界面批量转换
该方法依赖开源办公套件 LibreOffice,通过其内置的 headless 模式执行格式转换,不依赖 Microsoft Word 授权,支持跨平台运行,且转换过程不启动 GUI 界面,资源占用低。
1、下载并安装最新版 LibreOffice,安装时勾选“注册为默认应用程序”及“命令行工具”选项。
2、打开命令提示符(CMD)或 PowerShell,切换至 LibreOffice 安装目录下的 program 子目录,例如:cd "C:\Program Files\LibreOffice\program"。
3、执行以下命令:
soffice --headless --convert-to docx --outdir "C:\OutputFolder" "C:\SourceFolder\*.doc"
4、确认 "C:\OutputFolder" 已存在且有写入权限,"C:\SourceFolder" 中仅包含需转换的 .doc 文件。
5、命令执行完成后,目标输出目录中将生成对应名称的 .docx 文件,原始 .doc 文件保持不变。











