我的脚本可以从本地文件夹中选择使用指定名称的.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
参数。