Saltar al contenido

Recorrer archivos en un directorio usando PowerShell

Solución:

Prueba esto:

Get-ChildItem "C:UsersgerhardlDocumentsMy Received Files" -Filter *.log | 
Foreach-Object {
    $content = Get-Content $_.FullName

    #filter and save content to the original file
    $content | Where-Object {$_ -match 'step[49]'} | Set-Content $_.FullName

    #filter and save content to a new file 
    $content | Where-Object {$_ -match 'step[49]'} | Set-Content ($_.BaseName + '_out.log')
}

Para obtener el contenido de un directorio, puede usar

$files = Get-ChildItem "C:UsersgerhardlDocumentsMy Received Files"

Entonces puedes recorrer esta variable también:

for ($i=0; $i -lt $files.Count; $i++) {
    $outfile = $files[$i].FullName + "out" 
    Get-Content $files[$i].FullName | Where-Object { ($_ -match 'step4' -or $_ -match 'step9') } | Set-Content $outfile
}

Una forma aún más fácil de decirlo es la foreach loop (gracias a @Soapy y @MarkSchultheiss):

foreach ($f in $files){
    $outfile = $f.FullName + "out" 
    Get-Content $f.FullName | Where-Object { ($_ -match 'step4' -or $_ -match 'step9') } | Set-Content $outfile
}

Si necesita hacer un bucle dentro de un directorio de forma recursiva para un tipo particular de archivo, use el siguiente comando, que filtra todos los archivos de doc Tipo de archivo

$fileNames = Get-ChildItem -Path $scriptPath -Recurse -Include *.doc

Si necesita filtrar en varios tipos, use el siguiente comando.

$fileNames = Get-ChildItem -Path $scriptPath -Recurse -Include *.doc,*.pdf

Ahora $fileNames variable actuar como una formación desde el cual puede realizar un bucle y aplicar su lógica empresarial.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *