Programas de edição de texto, como o Bloco de Notas e o Notepad++, são ferramentas versáteis empregadas na criação de diversos tipos de arquivos, incluindo legendas, logs, scripts em lote, scripts do PowerShell e muitos outros. Assim como um editor de texto possibilita a criação desses arquivos, ele também permite sua edição. Se você possui uma grande quantidade de arquivos de texto, com a extensão .TXT, e necessita substituir uma palavra ou um conjunto de palavras em todos eles, um script do PowerShell pode ser a solução. Este script automatiza o processo, evitando a necessidade de abrir cada arquivo individualmente e realizar a substituição manualmente. Além disso, o mesmo script pode ser adaptado para outros formatos de arquivo que também são criados com editores de texto. A seguir, demonstraremos como substituir uma palavra em vários arquivos de texto de forma eficiente.
Substituição de Palavras em Arquivos de Texto
Inicialmente, é crucial que todos os arquivos de texto que serão processados sejam colocados em uma única pasta. O script opera dentro de um diretório específico e não em todo o sistema, por isso a organização dos arquivos é fundamental.
Comece abrindo um novo arquivo no Bloco de Notas e cole o código abaixo:
Get-ChildItem 'Path-to-files*.txt' -Recurse | ForEach { (Get-Content $_ | ForEach { $_ -replace 'Original-Word', 'New-Word' }) | Set-Content $_ }
Este script precisa ser ajustado de acordo com suas necessidades. Primeiro, substitua ‘Path-to-files’ pelo caminho absoluto da pasta que contém seus arquivos de texto. Em seguida, altere ‘Original-Word’ pela palavra que você pretende substituir. Por fim, modifique ‘New-Word’ pela palavra que será usada para substituir a anterior. Por exemplo, suponha que você tenha arquivos de texto com a palavra ‘Exemplo’ e deseje substituí-la por ‘Modelo’. O script ajustado para este cenário ficaria assim:
Get-ChildItem 'C:UsersseuUsuarioDesktoparquivos*.txt' -Recurse | ForEach { (Get-Content $_ | ForEach { $_ -replace 'Exemplo', 'Modelo' }) | Set-Content $_ }
Após a edição do script, salve-o com a extensão .ps1, selecionando a opção ‘Todos os Arquivos’ no menu ‘Salvar como’ do Bloco de Notas. Ao executar o script, a substituição será realizada em todos os arquivos da pasta especificada.
Caso deseje usar o mesmo script para arquivos XML ou LOG, a única mudança necessária é ajustar a extensão do arquivo na primeira linha do código. Por exemplo, originalmente:
Get-ChildItem 'C:UsersseuUsuarioDesktoparquivos*.txt'
Se transformaria em:
Get-ChildItem 'C:UsersseuUsuarioDesktoparquivos*.xml'
É importante notar uma limitação deste script: ele não diferencia palavras completas de partes de palavras. Ou seja, se você quiser substituir ‘o’ por ‘a’, ele também substituirá ‘o’ dentro de palavras como ‘os’ ou ‘todo’. Essa é uma falha conhecida deste script. Para contornar essa questão, o Notepad++ oferece a opção de ‘corresponder palavra inteira’, que pode ser uma alternativa mais precisa para este tipo de substituição.