使用Get-ChildItem和Remove-Item返回已删除项的计数

3
我已成功使用以下命令删除文件,但我想获取已删除项目的计数。
Get-ChildItem $dPath -Filter "*.blah" | Remove-Item 

我尝试过这个方法。它总是删除文件,但Measure-Object在删除之后运行,所以计数器始终返回0。

Get-ChildItem -Path C:\Temp -Filter "*.blah" | Remove-Item | Measure-Object

我尝试了反向操作,但总是出现以下错误信息:

[Remove-Item], ItemNotFoundException

Get-ChildItem -Path C:\Temp -Filter "*.blah" | Measure-Object | Remove-Item
2个回答

5

将项目收集到一个变量中,获取该列表的计数,然后删除这些项目:

$items = Get-ChildItem -Path C:\Temp -Filter "*.blah"
$cnt   = $items.Count
$items | Remove-Item

或者计算成功删除的项目数量:

$cnt = 0
Get-ChildItem -Path C:\Temp -Filter "*.blah" | ForEach-Object {
  Remove-Item $_.FullName
  if ($?) { $cnt++ }
}

2

在删除文件后,您可以将由Get-ChildItem返回的FileInfo写入输出管道:

Get-ChildItem -Path $path | 
   ForEach-Object { Remove-Item $_; Write-Output $_} | 
   Measure-Object

谢谢@heldi_!我喜欢你的代码,但最终使用了Ansgar的顶级示例,而不是使用循环。 - PseudoToad

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接