删除项 cmdlet 导致在本地文件夹中删除.exe文件的过程中出现"Cannot find path"



我的脚本可以从本地文件夹中选择使用指定名称的.exe文件,然后删除所有文件,除了第一个文件。

$P变量在param中定义。

$P ="$($env:USERPROFILE)DesktopI"

然后我得到了这个错误

$C = Get-ChildItem $P -Filter *.exe| Where-Object Name -Like '*r_2-2*' |  Sort-Object Name -Descending | Select-Object -ExpandProperty Name -Skip 1 | Remove-Item
Remove-Item : Cannot find path 'D:FMr_2-2.exe' because it does not exist.
At line:1 char:251
 + ... Descending | Select-Object -ExpandProperty Name -Skip 1 | Remove-Item

我知道foreach循环,但想使用For-EachObject CMDLET。

如果要使用ForEach-Object

,您很接近
Get-ChildItem $P -Filter *.exe | Where-Object Name -Like '*r_2-2*' |  Select-Object -Skip 1 | ForEach-Object { remove-item $_.FullName -force }

跳过一个第一个发现的结果,只有 Select-Object -Skip 1就足够了。

Remove-Item -Force还删除了隐藏和只读文件。

您可以直接在语句中使用FullName参数。尝试这个 -

$C = Get-ChildItem $P -Filter *.exe| Where-Object Name -Like '*r_2-2*' |  Sort-Object Name -Descending | Select-Object -ExpandProperty FullName -Skip 1
$c | ForEach-Object {Remove-Item -Path $_}

如果要删除隐藏的文件,请使用-Force参数。

最新更新