@echo off chcp 65001 >nul echo ======================================== echo 批量转换 .doc 文件到 .docx 格式 echo ======================================== echo. REM 检查是否安装了 Word where winword.exe >nul 2>&1 if %errorlevel% neq 0 ( echo 错误: 未找到 Microsoft Word echo 请确保已安装 Microsoft Word pause exit /b 1 ) echo 正在查找 .doc 文件... echo. REM 设置源目录和目标目录 set "SOURCE_DIR=模板\原始模板" set "TARGET_DIR=模板" REM 使用 PowerShell 脚本进行转换 powershell -ExecutionPolicy Bypass -Command ^ "$sourceDir = '%SOURCE_DIR%'; ^ $targetDir = '%TARGET_DIR%'; ^ $word = New-Object -ComObject Word.Application; ^ $word.Visible = $false; ^ Get-ChildItem -Path $sourceDir -Filter '*.doc' -Recurse | ForEach-Object { ^ $docxPath = $_.FullName -replace '\.doc$', '.docx'; ^ $relativePath = $_.FullName.Replace((Resolve-Path $sourceDir).Path + '\', ''); ^ $targetPath = Join-Path $targetDir $relativePath; ^ $targetPath = $targetPath -replace '\.doc$', '.docx'; ^ $targetFolder = Split-Path $targetPath -Parent; ^ if (-not (Test-Path $targetFolder)) { New-Item -ItemType Directory -Path $targetFolder -Force | Out-Null }; ^ Write-Host \"转换: $($_.Name) -> $(Split-Path $targetPath -Leaf)\"; ^ try { ^ $doc = $word.Documents.Open($_.FullName, $false, $true); ^ $doc.SaveAs2($targetPath, 16); ^ $doc.Close($false); ^ Write-Host \" ✓ 成功\" -ForegroundColor Green; ^ } catch { ^ Write-Host \" ✗ 失败: $_\" -ForegroundColor Red; ^ } ^ }; ^ $word.Quit(); ^ [System.Runtime.Interopservices.Marshal]::ReleaseComObject($word) | Out-Null" echo. echo ======================================== echo 转换完成! echo ======================================== pause