Página principal » cómo » Reemplazar texto en archivos de texto sin formato desde la línea de comandos

    Reemplazar texto en archivos de texto sin formato desde la línea de comandos

    Una función muy útil que falta en la biblioteca de Windows de herramientas de línea de comandos es la capacidad de reemplazar texto en archivos de texto sin formato. Una función como esta puede usarse para una variedad de tareas prácticas que realizan muchos administradores de sistemas, tales como:

    • Actualice la configuración / archivos INI para reemplazar las rutas UNC.
    • Actualización masiva de la información del usuario almacenada en archivos INI en un servidor Terminal / Citrix.
    • Úselo junto con los scripts para implementar datos 'con plantilla' y luego aplique valores a los archivos copiados.

    Nuestra solución es un VBScript que interactúa con la función de reemplazo de Visual Basic. Al colocar este script en una ubicación en su variable PATH de Windows, ahora tiene esta funcionalidad disponible a su disposición.

    Usos

    Una vez en su sistema, puede llamar al script simplemente usando el comando ReplaceText. Algunos ejemplos ilustrarán las formas en que puede usar esto:

    Reemplace la palabra "null" con "n / a" en el archivo C: DataValues.csv:

    ReplaceText "C: DataValues.csv" nulo n / a

    Escanee todos los archivos INI en la carpeta C: Users (+ subdirectorios) reemplazando todas las apariciones de "Servidor = Antiguo" con "Servidor = Nuevo" usando una búsqueda que no distingue mayúsculas y minúsculas

    FORFILES / P “C: Users” / M * .ini / S / C “Cmd / C ReplaceText @path Server = Servidor antiguo = Nuevo / I”

    Escanee todos los archivos CFG en el perfil del usuario actual reemplazando "p @ ssw0rd" con "PA $$ woRd" usando una búsqueda que distingue entre mayúsculas y minúsculas:

    FORFILES / P “% UserProfile%” / M * .cfg / S / C “Cmd / C ReplaceText @path p @ ssw0rd PA $$ woRd”

    Como puede ver a continuación, el script es muy simple y puede modificarse fácilmente para adaptarse a cualquier situación especial que pueda tener. Alternativamente, es posible que desee crear copias de la secuencia de comandos que codifican valores concretos para que pueda ejecutar el comando con un doble clic y / o permitirle distribuirlo fácilmente a otros..

    La secuencia de comandos

    'Reemplazar texto
    'Escrito por: Jason Faulkner
    'SysadminGeek.com

    'Este script debe colocarse en una carpeta especificada en la variable PATH de su sistema.

    'Uso (WScript):
    'ReplaceText FileName OldText NewText [/ I]

    '/ I (opcional) - La coincidencia de texto no distingue entre mayúsculas y minúsculas

    Establecer oArgs = WScript.Arguments

    intCaseSensitive = 0
    Para i = 3 a oArgs.Count-1
    Si UCase (oArgs (i)) = "/ I" Entonces intCaseSensitive = 1
    Siguiente

    Establecer oFSO = CreateObject ("Scripting.FileSystemObject")

    Si no es oFSO.FileExists (oArgs (0)) Entonces
    WScript.Echo "El archivo especificado no existe".
    Más
    Establecer oFile = oFSO.OpenTextFile (oArgs (0), 1)
    strText = oFile.ReadAll
    oFile.Close

    strText = Replace (strText, oArgs (1), oArgs (2), 1, -1, intCaseSensitive)

    Establecer oFile = oFSO.OpenTextFile (oArgs (0), 2)
    oFile.WriteLine strText
    oFile.Close
    Terminara si

    Notas adicionales

    De forma predeterminada, Windows usa WScript para ejecutar archivos VBScript (VBS). El único problema que esto puede causar es cualquier error y / o los mensajes de la secuencia de comandos aparecerán como cuadros emergentes. Para una herramienta de línea de comandos, es mejor que estos mensajes se muestren en la consola. Hay un par de maneras en que puedes lograr esto.

    Cambie el controlador predeterminado de archivos VBScript a CScript ejecutando este comando desde el símbolo del sistema (con derechos de administrador):

    CScript // H: CScript

    Ejecute el script ReplaceText explícitamente usando el comando CScript:

    CScript "C: PathToReplaceText.vbs" // B FileName OldText NewText [/ I]

    Como un caso especial, la ejecución de ReplaceText desde un script por lotes generalmente implica CScript como el motor utilizado independientemente del controlador predeterminado. Definitivamente querrá probar esto antes de confiar en esta funcionalidad.

    Descargar ReplaceText Script desde SysadminGeek.com