Se você gerencia uma pasta com muitos documentos do Word no formato antigo .doc, abrir cada arquivo para converter para .docx é perda de tempo. O formato .doc é o binário usado do Word 97 ao Word 2003, enquanto .docx é o formato XML mais novo introduzido no Word 2007. Este artigo explica como usar um script PowerShell para converter todos os arquivos .doc de uma pasta para .docx em uma única operação.
O script automatiza o Word por meio de seu modelo de objeto COM, abrindo cada arquivo .doc e salvando como .docx sem intervenção manual. Você não precisa instalar software adicional além do Word e do PowerShell, ambos incluídos no Windows 10 e Windows 11. Após seguir este guia, você poderá executar a conversão em qualquer pasta e, opcionalmente, excluir os arquivos .doc originais.
Principais Pontos: Conversão em Lote de .doc para .docx com PowerShell
- Script PowerShell com objeto COM do Word (New-Object -ComObject Word.Application): Abre o Word em segundo plano e automatiza a conversão sem exibir a janela do Word.
- Get-ChildItem -Filter doc: Encontra todos os arquivos .doc em uma pasta e suas subpastas para processamento em lote.
- Método Document.SaveAs2 com wdFormatDocumentDefault (16): Salva cada arquivo como .docx usando a constante de formato padrão do Word.
Por que Usar PowerShell para Conversão em Lote de .doc para .docx
O Word pode abrir arquivos .doc nativamente e salvá-los como .docx, mas não possui uma ferramenta de conversão em lote integrada. A interface gráfica exige que você abra cada arquivo, escolha Salvar Como, selecione o formato .docx e confirme o local de salvamento. Para centenas de arquivos, esse processo é impraticável.
O PowerShell pode automatizar o Word usando a interface COM (Component Object Model). O script inicia uma instância invisível do Word, abre cada arquivo .doc, salva como .docx usando a constante wdFormatDocumentDefault (valor 16) e fecha o documento. O script é executado totalmente em segundo plano e não interfere em outros trabalhos.
Pré-requisitos para este método:
- Word instalado no computador (qualquer edição a partir de 2007 funciona).
- PowerShell 5.0 ou posterior, incluído no Windows 10 e Windows 11.
- Permissões de gravação na pasta onde os arquivos .doc estão localizados. O script salva os arquivos .docx na mesma pasta.
- Os arquivos .doc originais não devem estar protegidos por senha ou corrompidos. O script ignora arquivos que causam erros.
Passos para Converter Arquivos .doc para .docx em Lote
Siga estes passos exatamente. O script processa todos os arquivos .doc na pasta especificada. Ele não modifica os arquivos originais a menos que você adicione a etapa de exclusão no final.
- Abra o PowerShell como Administrador
Clique no botão Iniciar, digite PowerShell, clique com o botão direito em Windows PowerShell nos resultados e selecione Executar como administrador. Confirme o prompt do Controle de Conta de Usuário. Executar como administrador garante que o script possa acessar todas as pastas sem erros de permissão. - Defina a política de execução para permitir scripts (se necessário)
O PowerShell pode bloquear a execução de scripts por padrão. Digite o seguinte comando e pressione Enter:Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
Essa alteração se aplica apenas à sessão atual do PowerShell. Permite que o script seja executado uma vez sem alterar a política do sistema. - Copie o script de conversão para o PowerShell
Copie o bloco de script abaixo e cole na janela do PowerShell clicando com o botão direito na barra de título e selecionando Editar > Colar. SubstituaC:\Caminho\Para\Sua\Pastapelo caminho real da pasta que contém seus arquivos .doc.$folderPath = "C:\Caminho\Para\Sua\Pasta" $wordApp = New-Object -ComObject Word.Application $wordApp.Visible = $false Get-ChildItem -Path $folderPath -Filter doc -Recurse | ForEach-Object { $docPath = $_.FullName $docxPath = [System.IO.Path]::ChangeExtension($docPath, ".docx") try { $doc = $wordApp.Documents.Open($docPath) $doc.SaveAs2([ref] $docxPath, [ref] 16) $doc.Close() Write-Host "Convertido: $docPath" } catch { Write-Host "Falhou: $docPath - $_" } } $wordApp.Quit() [System.Runtime.Interopservices.Marshal]::ReleaseComObject($wordApp) | Out-Null - Execute o script
Pressione Enter para executar o script. O PowerShell processa cada arquivo .doc na pasta especificada e em todas as subpastas. Uma mensagem de progresso aparece para cada arquivo: Convertido: C:\Documentos\relatorio.doc para sucesso, ou Falhou: C:\Documentos\antigo.doc – mensagem de erro para qualquer arquivo que não pôde ser aberto. - Verifique os arquivos .docx convertidos
Abra a pasta no Explorador de Arquivos. Você deve ver um arquivo .docx ao lado de cada arquivo .doc original. Abra alguns arquivos .docx no Word para confirmar se o conteúdo, a formatação e as imagens estão intactos. O script preserva o nome original do arquivo e altera apenas a extensão. - Exclua os arquivos .doc originais (opcional)
Se tiver certeza de que as conversões estão corretas, você pode remover os arquivos .doc antigos. Adicione esta linha antes de$wordApp.Quit()no script:Remove-Item -Path $docPath -Force
Execute o script novamente na mesma pasta. A exclusão é permanente e ignora a Lixeira, então teste o script em uma cópia de backup primeiro.
Problemas Comuns e Como Resolvê-los
O script é executado, mas nenhum arquivo .docx aparece na pasta
Isso acontece quando o caminho da pasta no script aponta para um local que não contém arquivos .doc. Verifique se a variável $folderPath usa o caminho completo correto. O caminho não deve incluir espaços no final ou aspas dentro da string. Execute Get-ChildItem -Path $folderPath -Filter doc no PowerShell para listar todos os arquivos .doc antes de executar o script de conversão.
O Word abre e fecha repetidamente durante o script
O script define $wordApp.Visible = $false para ocultar a janela do Word. Se o Word ainda aparecer, outro processo pode estar interferindo. Feche todos os documentos do Word abertos antes de executar o script. Se o problema persistir, reinicie o Windows para limpar objetos COM travados.
Erro: “Não é possível abrir o documento” para um arquivo específico
O arquivo .doc pode estar corrompido, protegido por senha ou salvo em um formato que o Word não consegue ler. Abra esse arquivo diretamente no Word. Se o Word não conseguir abri-lo, o arquivo não é recuperável por automação. Se o arquivo estiver protegido por senha, você deve remover a senha manualmente antes que o script possa convertê-lo.
PowerShell retorna “Objeto não definido para uma instância de um objeto”
Esse erro ocorre quando o comando New-Object -ComObject Word.Application falha. O Word pode não estar instalado ou o registro COM está corrompido. Reinstale o Word ou execute Reparar no programa de instalação do Office em Painel de Controle > Programas > Microsoft Office > Alterar > Reparação Rápida.
Script PowerShell vs Conversão Manual no Word
| Item | Script PowerShell | Conversão Manual (Word) |
|---|---|---|
| Tempo para 100 arquivos | 5–10 minutos (automático) | 60–90 minutos (ativo) |
| Interação do usuário necessária | Nenhuma após iniciar o script | Abrir, Salvar Como, selecionar formato, fechar por arquivo |
| Risco de erro humano | Baixo (saída consistente) | Alto (pular arquivos, formato errado) |
| Suporte a subpastas | Sim, com parâmetro -Recurse | Não, é necessário navegar manualmente |
| Nível de habilidade necessário | Intermediário (noções básicas de PowerShell) | Iniciante |
O script PowerShell é o método mais rápido e confiável para converter muitos arquivos .doc. A conversão manual é adequada apenas para um ou dois arquivos.
Agora você pode converter uma pasta inteira de arquivos .doc legados para o formato moderno .docx sem abrir cada arquivo manualmente. Teste o script em uma cópia de backup dos seus arquivos antes de executá-lo no arquivo principal. Para uma camada extra de segurança, adicione o parâmetro -WhatIf ao comando Remove-Item para visualizar quais arquivos seriam excluídos sem realmente removê-los.