递归删除匹配文件名的文件(PowerShell脚本)

递归删除匹配文件名的文件(PowerShell脚本)

我已经将旧的批处理文件转换为 powershell 脚本,并取得了不错的成功。但是...在这种情况下,我不太清楚什么是最佳和有效的方法。

这是批处理脚本:

attrib -h -s *.* /s
del /s folder.jpg
del /s albumart*.jpg
del /s desktop.ini
@pause

基本上,它会遍历我的音乐文件夹和子文件夹并删除其中可能存在的所有垃圾(我的音乐文件夹中有垃圾)。

这样的事情会起作用吗(经过快速测试后发现没有用,但是……)?

$currentfolder = split-path -parent $MyInvocation.MyCommand.Definition
Get-ChildItem -Path $currentfolder -Include folder.jpg, albumart*.jpg, desktop.ini -File -Recurse | foreach { $_.Delete()}

回显已删除的文件名也很好。

编辑:我在这里添加了完全可行的解决方案:

$currentfolder = split-path -parent $MyInvocation.MyCommand.Definition

Get-ChildItem -Path $currentfolder -Include folder.jpg, albumart*.jpg, desktop.ini -File -Recurse | foreach { echo "Deleting: $_" ; $_.Delete()}

答案1

即使你的第二个脚本可以工作,这个脚本也更容易理解,并且可以用“更好的 PowerShell”编写:

$currentfolder = Get-Location
Get-ChildItem -Path $currentfolder -File -Include folder.jpg,albumart*.jpg,desktop.ini -Recurse | Remove-Item -Force -Verbose

希望这可以帮助 !

相关内容