Powershell如何循环遍历目录中的单个文件



我有一个包含文本文件的目录,我需要遍历并删除每个文件中的第一行和最后一行。之后,我需要将它们连接起来,并将输出设置为一个文件。

我的问题是,当我循环遍历目录时,它只操作第一个文件,然后停止。我该如何逐一浏览呢?

我代码:

$path = 'C:RemoveFirst*.txt'
$output = 'C:RemoveFirstWork.txt'
for ($i = 0; $i -lt $path.Count; $i++) {
Get-Content $path | Select-Object -Skip 1 | Select-Object -SkipLast 1 | Set-Content $output
}

这个也可以:

$path = 'C:RemoveFirst*.txt'
$outfile = 'C:RemoveFirstWork.txt'
Get-ChildItem $path|foreach-object{
Get-Content $_|select-object -Skip 1|select-object -SkipLast 1
} > $outfile

这应该能奏效:

$path = 'C:RemoveFirst*.txt'
$output = 'C:RemoveFirstWork.txt'
Get-Item $path | ForEach-Object {
# Output all except first and last line of current file 
Get-Content $_ | Select-Object -Skip 1 | Select-Object -SkipLast 1
''  # Output an empty line at the end of each file
} | Set-Content $output
  • Get-Item在路径包含通配符时循环遍历所有匹配的元素。
  • ForEach-Object使Select-Object语句分别对每个文件进行操作。否则,它们将应用于所有文件的行连接流,从而只跳过第一个文件的第一行和最后一个文件的最后一行。
  • 最后使用Set-Content将所有行连接到一个文件中。或者使用Out-File,查看这篇文章的差异。

相关内容

  • 没有找到相关文章

最新更新