如何更改以下代码以查看目录中的所有 .log 文件,而不仅仅是一个文件?
我需要遍历所有文件并删除所有不包含“step4”或“step9”的行。目前这将创建一个新文件,但我不确定如何在for each此处使用循环(新手)。
for each
实际文件的名称如下: 2013 09 03 00_01_29.log 。我希望输出文件要么覆盖它们,要么具有相同的名称,并附加“out”。
$In = "C:\Users\gerhardl\Documents\My Received Files\Test_In.log" $Out = "C:\Users\gerhardl\Documents\My Received Files\Test_Out.log" $Files = "C:\Users\gerhardl\Documents\My Received Files\" Get-Content $In | Where-Object {$_ -match 'step4' -or $_ -match 'step9'} | ` Set-Content $Out
试试这个:
Get-ChildItem "C:\Users\gerhardl\Documents\My 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') }