我们有很多用户的桌面上有重复的文件 (Windows 10)。我想创建一个每 X 分钟运行一次或登录系统后运行一次的脚本。
我们的用户当前看到以下快捷方式 (.lnk):
- Dummy.lnk (正确的快捷方式,应保持不变)
- 虚拟 - copy.lnk (重复的快捷方式,应删除)
- Dummy-OFFICE-QB4V70A.lnk (包含计算机名称的重复快捷方式,应删除)
所以简而言之,我想保留“原始”快捷方式,但我想删除所有包含“- copy.lnk”和/或“-computername”的快捷方式。 lnk'。
我还尝试使用 %computername% 变量,但我不知道如何在我的代码中实现它。每台计算机都有不同且唯一的名称,因此我无法使用预定义的计算机名称。
关于如何实现这一目标有什么建议吗?我尝试使用下面的代码,但这会删除所有 .lnk(快捷方式)文件,而不仅仅是重复的文件。
#(Get-ChildItem Dummy.lnk | Select-String -Pattern "OFFICE" | Select-Object -ExpandProperty path -Unique) | ForEach-Object{Remove-Item -Force -LiteralPath $_}
我更喜欢使用 Powershell,这样我就可以使用组策略部署脚本。
最佳答案
我将使用 Where-Object
cmdlet 来过滤要删除的所有快捷方式,并将它们通过管道传输到 Remove-Item
cmdlet:
Get-ChildItem -Path 'c:\yourPath' -Filter '*.lnk' |
Where-Object { $_.Name -match '- Copy\.lnk$' -or $_.Name -like "*$($env:Computername)*"} |
Remove-Item
关于string - 删除包含特定字符串的重复快捷方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59301812/