PowerShell reemplaza cadena en varios archivos
Usando el método PowerShell replace() o el operador PowerShell replace, podemos reemplazar cadenas en varios archivos.
Al usar el cmdlet Get-ChildItem, se obtiene el elemento de la ubicación especificada y se canaliza la salida al Get-Content para leer el archivo. Podemos llamar al método de reemplazo para reemplazar cadenas en múltiples archivos.
En este artículo, analizaremos cómo reemplazar cadenas en varios archivos utilizando el método replace() de PowerShell o el operador de reemplazo.
Reemplazar cadena en varios archivos usando el método reemplazar()
Usando el método PowerShell replace() sobre los múltiples archivos recuperados usando el cmdlet Get-ChildItem, puede realizar la sustitución de cadenas en múltiples archivos.
Digamos que tenemos varios archivos de configuración en el directorio y queremos reemplazar el año de copyright en cada uno de los archivos de configuración con el año actual.
Para reemplazar una cadena en varios archivos, tendremos que obtener los archivos de la ubicación y usar el cmdlet Get-Content para leer el contenido del archivo.
$filePath = "D:\ps\Config\*.config"
# Get the files from the folder and iterate using Foreach
Get-ChildItem $filePath -Recurse | ForEach-Object {
# Read the file and use replace()
(Get-Content $_).Replace('2015','2022') | Set-Content $_
}En el script de PowerShell anterior, la variable $filePath contiene la ruta del directorio de archivos de configuración.
Utilizando el cmdlet Get-ChildItem, recupera los archivos de forma recursiva y utiliza ForEach-Object para iterar sobre cada archivo.
El cmdlet Get-Content utiliza la ruta del archivo para leer el contenido del archivo e invocar el método replace() con dos argumentos; año anterior para buscar y valor de cadena para reemplazar con texto encontrado y canalizar la salida al cmdlet Set-Content
El cmdlet Set-Content utiliza la ruta del archivo para guardar el archivo.
Usemos Get-Content para leer el contenido del archivo de uno de los archivos de configuración para verificar si la cadena de reemplazo en varios archivos se guarda o no.
Get-Content -Path D:\PS\Config\app-1.configPS C:\> Get-Content -Path D:\PS\Config\app-1.config
[assembly: AssemblyTitle("Logic")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("Logic")]
[assembly: AssemblyCopyright("Copyright © 2022")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
PS C:\> PowerShell Reemplazar cadena en varios archivos usando el operador de reemplazo
Podemos usar el operador reemplazar de PowerShell para reemplazar cadenas en varios archivos.
Usemos el ejemplo anterior para reemplazar cadenas en varios archivos de configuración para actualizar el año de copyright.
$filePath = "D:\ps\Config\*.config"
# Get the files from the folder and iterate using Foreach
Get-ChildItem $filePath -Recurse | ForEach-Object {
# Read the file and use replace()
(Get-Content $_) -replace '2015','2022'
}En el script de PowerShell anterior, la variable $filePath almacena la ruta del directorio de múltiples archivos de configuración. El uso de Get-ChildItem usa $filePath para obtener los archivos y usa ForEach-Object para iterar el archivo.
El cmdlet Get-Content usa la ruta del archivo para leer el contenido del archivo y usa el operador de reemplazo para reemplazar la cadena en los archivos.
Conclusión
Espero que el artículo anterior sobre cómo reemplazar cadenas en varios archivos usando el método de reemplazo() de PowerShell o el operador de reemplazo le resulte útil.
La cadena de PowerShell tiene funciones integradas para la manipulación de cadenas.
Puede encontrar más temas sobre los comandos de PowerShell Active Directory y los conceptos básicos de PowerShell en la página de inicio de ShellGeek.