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)