Substituir texto em arquivos de texto sem formatação da linha de comando
Uma função muito útil que está faltando na biblioteca do Windows de ferramentas de linha de comando é a capacidade de substituir texto em arquivos de texto simples. Uma função como essa pode ser usada para uma variedade de tarefas práticas que muitos administradores do sistema executam, como:
- Atualizar arquivos de configuração / INI para substituir os caminhos UNC.
- Informações de usuário de atualização em massa armazenadas em arquivos INI em um servidor Terminal / Citrix.
- Use em conjunto com scripts para implantar dados 'modelados' e, em seguida, aplique valores aos arquivos copiados.
Nossa solução é um VBScript que faz interface com a função Visual Basic Replace. Ao colocar esse script em um local na variável PATH do Windows, você agora tem essa funcionalidade disponível à sua disposição.
Usos
Uma vez no seu sistema, você pode chamar o script simplesmente usando o comando ReplaceText. Alguns exemplos ilustrarão maneiras pelas quais você pode usar isto:
Substitua a palavra “null” por “n / a” no arquivo C: DataValues.csv:
ReplaceText “C: DataValues.csv” null n / d
Analise todos os arquivos INI na pasta C: Users (+ sub-diretórios) substituindo todas as ocorrências de "Server = Old" por "Server = New" usando uma pesquisa sem distinção entre maiúsculas e minúsculas:
FORFOS / P “C: Usuários” / M * .ini / S / C “Cmd / C ReplaceText @path Servidor = Servidor Antigo = Novo / I”
Analise todos os arquivos CFG no perfil do usuário atual, substituindo "p @ ssw0rd" por "PA $$ woRd" usando uma pesquisa sensível a maiúsculas e minúsculas:
FORFOS / P “% UserProfile%” / M * .cfg / S / C “Cmd / C ReplaceText @path p @ ssw0rd PA $$ woRd”
Como você pode ver abaixo, o script é muito simples e pode ser facilmente modificado para acomodar qualquer situação especial que você possa ter. Alternativamente, você pode querer criar cópias do script que codificam determinados valores para que você possa executar o comando com um clique duplo e / ou permitir que você o distribua facilmente para outras pessoas..
O script
'Substituir texto
Escrito por: Jason Faulkner
'SysadminGeek.com
'Este script deve ser colocado em uma pasta especificada na variável PATH do seu sistema.
'Uso (WScript):
'ReplaceText FileName OldText NewText [/ I]
'/ I (opcional) - A correspondência de texto não diferencia maiúsculas de minúsculas
Definir oArgs = WScript.Arguments
intCaseSensitive = 0
Para i = 3 para oArgs.Count-1
Se UCase (oArgs (i)) = "/ I" Então intCaseSensitive = 1
Próximo
Definir oFSO = CreateObject ("Scripting.FileSystemObject")
Se não oFSO.FileExists (oArgs (0)) então
WScript.Echo "Arquivo especificado não existe."
Outro
Set oFile = oFSO.OpenTextFile (oArgs (0), 1)
strText = oFile.ReadAll
oFile.Close
strText = Substituir (strText, oArgs (1), oArgs (2), 1, -1, intCaseSensitive)
Set oFile = oFSO.OpenTextFile (oArgs (0), 2)
oFile.WriteLine strText
oFile.Close
Fim se
Notas Adicionais
Por padrão, o Windows usa o WScript para executar arquivos VBScript (VBS). O único problema que isso pode causar é que quaisquer erros e / ou mensagens do script aparecerão como caixas pop-up. Para uma ferramenta de linha de comando, é melhor que essas mensagens sejam exibidas no console. Existem algumas maneiras de conseguir isso.
Altere o manipulador padrão de arquivos VBScript para CScript, executando este comando no prompt de comando (com direitos de administrador):
CScript // H: CScript
Execute o script ReplaceText explicitamente usando o comando CScript:
C: “C: PathToReplaceText.vbs” // B NomeDoArquivo OldText NewText [/ I]
Como um caso especial, a execução de ReplaceText a partir de um script em lote normalmente indica o CScript como o mecanismo usado, independentemente do manipulador padrão. Você definitivamente vai querer testar isso antes de confiar nesta funcionalidade.
Baixar ReplaceText Script de SysadminGeek.com