Cómo verificar si un archivo contiene una cadena específica usando PowerShell
-
Verificar si un Archivo Contiene una Cadena Específica Usando
Select-String
en PowerShell -
Verificar si un Archivo Contiene una Cadena Específica Usando
Get-Content
en PowerShell - Verificar Múltiples Archivos que Contienen una Cadena Específica
- Conclusión

Buscar una cadena específica dentro de un archivo de texto es una tarea común al trabajar con Windows PowerShell. Mientras que los entornos Unix y Linux cuentan con el confiable comando grep
, PowerShell ofrece un enfoque alternativo utilizando los cmdlets Select-String
, Get-Content
y Get-ChildItem
.
En este artículo, exploraremos varios métodos sobre cómo usar PowerShell para encontrar una cadena en un archivo de texto.
Verificar si un Archivo Contiene una Cadena Específica Usando Select-String
en PowerShell
Supongamos que tenemos un archivo Demo.txt
en nuestra máquina y queremos encontrar la cadena Demostración
en él.
Aquí está el script de PowerShell para hacerlo:
Select-String -Path C:\Users\pc\Demo\Demo.txt -Pattern 'Demonstration'
En este script, usamos Select-String
con el parámetro -Path
para especificar la ubicación del archivo y el parámetro -Pattern
para especificar la cadena que estamos buscando.
Si nuestro archivo contiene el patrón especificado ('Demostración'
), la consola mostrará el nombre del archivo, el número de línea y la línea que contiene la cadena.
Salida:
C:\Users\pc\Demo\Demo.txt:1:This purely for demonstration
La salida anterior muestra el archivo Demo.txt
con su ruta completa, la línea que contiene nuestra cadena (línea 1
), y la línea que contiene la cadena en sí (Esto es puramente para demostración
).
Pero, ¿qué pasa si solo necesitamos saber si el archivo contiene o no la cadena? En tal caso, podemos modificar el script de la siguiente manera:
$Knw = Select-String -Path C:\Users\pc\Demo\Demo.txt -Pattern "Demonstration"
if ($Knw -ne $null) {
echo Contains String
}
else {
echo Does not Contain String
}
En este script, hemos definido una variable llamada $Knw
, que contiene el resultado de la cadena buscada "Demostración"
en el archivo ubicado en la ruta especificada usando Select-String
. Luego, comprobamos si la variable $Knw
no es igual a $null
, lo que significa que se encontró una coincidencia en el archivo.
Si se encuentra una coincidencia, imprime "Contiene Cadena."
. Si no se encuentra ninguna coincidencia, imprime "No Contiene Cadena."
.
Salida:
Contains String
Dado que nuestro archivo sí contiene el patrón "Demostración"
, la salida imprime Contiene Cadena
.
Verificar si un Archivo Contiene una Cadena Específica Usando Get-Content
en PowerShell
Get-Content
es un cmdlet que recupera el contenido de una ruta específica a un archivo y lee el contenido del archivo para devolver un objeto de cadena. Para usar Get-Content
en nuestro archivo Demo.txt
, utilizaremos el script ilustrado a continuación:
Get-Content -Path C:\Users\pc\Demo\Demo.txt | Select-String -Pattern "Demonstration"
En este script, usamos Get-Content
para leer el contenido de nuestro archivo Demo.txt
especificado por el parámetro -Path
y lo enviamos al comando Select-String
, que utiliza el parámetro -Pattern
para localizar la cadena Demostración
.
Salida:
This purely for demonstration
Si solo queremos confirmar la presencia de la cadena, podemos usar el script que se muestra a continuación:
If (Get-Content C:\Users\pc\Demo\Demo.txt | % { $_ -match "Demonstration" }) {
echo Contains String
}
else {
echo Does not Contains String
}
En este script, usamos Get-Content
para leer los datos del archivo ubicado en C:\Users\pc\Demo\Demo.txt
y una tubería (|
) para procesar cada línea del archivo una por una. Dentro del bloque %{}
comprobamos si cada línea contiene la cadena "Demostración"
utilizando el operador -match
.
Si alguna línea en el archivo contiene "Demostración"
, imprime "Contiene Cadena"
. Si ninguna línea en el archivo contiene "Demostración"
, imprime "No Contiene Cadena"
.
Salida:
Contains String
Dado que nuestro archivo contiene la cadena especificada ("Demostración"
), obtenemos Contiene Cadena
como salida.
Verificar Múltiples Archivos que Contienen una Cadena Específica
¿Qué pasa si tienes más de cincuenta archivos de texto y deseas buscar una cadena en todos ellos? Discutiremos dos maneras de hacerlo.
Usando Get-ChildItem
y Search-String
en PowerShell
Podemos usar los cmdlets Get-ChildItem
y Select-String
. El cmdlet Get-ChildItem
encontrará uno o más archivos basados en nuestros criterios de búsqueda.
Veamos un ejemplo. Suponiendo que nuestra carpeta Demo
tiene más de cincuenta archivos de texto, podemos buscar la cadena Demostración
en todos ellos usando este script:
Get-ChildItem -Path C:\Users\pc\Demo\ -Recurse | Select-String -Pattern 'Demonstration'
En este script, usamos Get-ChildItem
para listar los archivos en el directorio especificado (-Path
) y sus subdirectorios (-Recurse
). El operador de tubería (|
) pasa la lista de archivos al cmdlet Select-String
.
Por último, usamos Select-String
para buscar un patrón específico, 'Demostración'
en cada archivo.
La consola mostrará los nombres de los archivos que contienen nuestra cadena, los números de línea y las líneas que contienen la cadena.
Salida:
C:\Users\pc\Demo\Demo.txt:1:This purely for demonstration
C:\Users\pc\Demo\Insert.txt:1:We will use this demonstration for a test trial
C:\Users\pc\Demo\myfile.txt:1:This is a demonstration file for Get-ChildItem
Usando Select-String
en PowerShell
También podemos usar Select-String
solo para verificar la cadena específica en múltiples archivos.
Select-String -Path C:\Users\pc\Demo\*.txt -Pattern 'Demonstration'
En este script, usamos el comodín (*
) en el parámetro -Path
para buscar todos los archivos de texto en la carpeta Demo
. El cmdlet Select-String
buscará la cadena en todos los archivos que coincidan.
Salida:
C:\Users\pc\Demo\Demo.txt:1:This purely for demonstration
C:\Users\pc\Demo\Insert.txt:1:We will use this demonstration for a test trial
C:\Users\pc\Demo\myfile.txt:1:This is a demonstration file for Get-ChildItem
Al igual que lo anterior, la consola mostrará los nombres de los archivos que contienen nuestra cadena, los números de línea y las líneas que contienen la cadena.
Conclusión
Windows PowerShell proporciona un conjunto de herramientas para buscar cadenas en archivos de texto de manera eficiente. Ya sea que prefieras usar Select-String
, Get-Content
, o una combinación de Get-ChildItem
y Select-String
, puedes localizar y manipular fácilmente datos dentro de tus archivos.
Con estos cmdlets, no tendrás problemas para encontrar la información que necesitas, haciendo que las búsquedas de archivos de texto en PowerShell sean sencillas.
John is a Git and PowerShell geek. He uses his expertise in the version control system to help businesses manage their source code. According to him, Shell scripting is the number one choice for automating the management of systems.
LinkedInArtículo relacionado - PowerShell String
- Cómo encontrar la posición de una subcadena en PowerShell
- Cómo reemplazar un texto en un archivo usando PowerShell
- Cómo verificar si una cadena no es NULL o VACÍA en PowerShell
- Comprobar si la cadena está vacía en PowerShell
- Cómo convertir una cadena segura a texto sin formato en PowerShell
- Cómo eliminar espacios de una variable usando PowerShell