PowerShell Bucle a través de archivos y carpetas
-
Recorra archivos y carpetas usando PowerShell
Get-ChildItem
-
Recorra archivos y carpetas utilizando PowerShell
Get-ChildItem
yForEach
Este artículo ilustra cómo podemos escribir un script de PowerShell para recorrer archivos y carpetas. Usaremos las declaraciones Get-ChildItem
y ForEach
para crear diferentes scripts de PowerShell. Saltemos directamente.
Recorra archivos y carpetas usando PowerShell Get-ChildItem
Usamos el cmdlet de PowerShell Get-ChildItem
para mostrar una lista de archivos y carpetas en una ubicación específica. Usamos el atributo -path
para especificar la ruta al directorio deseado.
El Get-ChildItem
también utiliza gci
como alias.
Por ejemplo, si queremos obtener una lista de los archivos y carpetas en nuestra unidad C:/
, podemos ejecutar lo siguiente:
Get-ChildItem -Path 'C:\'
El comando anterior solo mostrará los archivos y carpetas en la raíz de nuestro disco. Para obtener el contenido de los directorios secundarios (subcarpetas), podemos agregar el parámetro -Recurse
, como se ilustra a continuación.
Get-ChildItem -Path 'C:\' -Recurse
PowerShell mostrará el contenido de todas las subcarpetas ubicadas en nuestro disco.
Recorra archivos y carpetas utilizando PowerShell Get-ChildItem
y ForEach
Usamos el bucle ForEach
de PowerShell para actuar como cada objeto en una colección de objetos. Esta es la estructura general cuando se utiliza el cmdlet Get-ChildItem
y el bucle ForEach
:
Get-ChildItem –Path "C:\" |
Foreach-Object {
#Some action with $_.FullName
}
Veamos algunos scripts de ejemplo que usan las dos utilidades de PowerShell.
Digamos que queremos eliminar todos los archivos .csv
en nuestra carpeta C:\Users\pc
. ¿Cómo hacemos esto?
Como se ilustra a continuación, podemos usar el cmdlet Get-ChildItem
y el bucle ForEach
para realizar esta tarea.
Get-ChildItem –Path "C:\Users\pc" -Recurse -Filter *.csv
|
Foreach-Object {
Remove-Item $_.FullName -WhatIF
}
El script anterior usa el cmdlet de PowerShell Get-ChildItem
con el parámetro -Recurse
para obtener todos los archivos en nuestra carpeta C:\Users\pc
. Luego usamos el parámetro Filtro
para buscar archivos con solo una extensión de archivo .csv
.
Canalizamos los resultados al bucle ForEach
, donde se eliminan los archivos. Sin embargo, como no queremos borrar nuestros archivos, hemos añadido el parámetro -WhatIf
. A continuación se muestra el resultado del script anterior.
Nuestro script ha encontrado seis archivos con una extensión de archivo .csv
. Los archivos aún no se han eliminado ya que usamos el parámetro -WhatIf
.
También podemos crear un script que elimine archivos anteriores a una fecha determinada. Esto puede resultar útil al limpiar archivos de registro temporales de nuestro sistema.
A continuación se muestra un script de ejemplo que elimina archivos con más de 7 días de antigüedad en nuestro directorio pc
.
Get-ChildItem C:\Users\pc\ -Recurse
|
Where-Object { $_.CreationTime -lt ($(Get-Date).AddDays(-7))} |
ForEach-Object { remove-Item $_.FullName –whatif }
Este Get-ChildItem
con el parámetro Recurse
buscará todos los archivos en nuestra carpeta pc
y los reducirá a nuestro bucle ForEach
. El bucle eliminará todos los archivos que tengan más de siete días.
Como no queremos deshacernos de los archivos de nuestra carpeta, hemos añadido el parámetro -WhatIf
.
En conclusión, podemos usar PowerShell Get-ChildItem
y el bucle ForEach
para crear scripts que recorren archivos y carpetas.
El bucle ForEach
realizará una acción específica contra todos los archivos canalizados desde el cmdlet Get-ChildItem
. Hay diferentes formas en que podemos usar las dos utilidades de PowerShell.
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 File
- Almacene el contenido del archivo de texto en variable usando PowerShell
- Consulta de la última hora de escritura del archivo en PowerShell
- Desbloquear archivos usando PowerShell
- Dividir archivo grande en PowerShell
- Leer archivo CSV línea por línea en PowerShell
- Buscar archivos con extensión en PowerShell