powershell 递归删除子文件夹中的文件

powershell 递归删除子文件夹中的文件

我正在尝试编写一个脚本来搜索路径下子文件夹中具有不同扩展名的重复基本文件名。

例如,一个文件夹可能包含 file1.zip 和 file1.pdf 而我只想删除文件夹内的重复 PDF。

我找到了这个,它只对路径变量中的设置路径有效。添加-recurseGet-Child Item似乎不起作用。

$Path = "C:\logs"

ForEach ($File in (Get-ChildItem $Path\*.pdf))
{   If ((Test-Path "$Path\$($File.Basename).zip"))
    {   $File | Remove-Item 
    }
}

关于如何将此逻辑应用于所有子文件夹有什么建议吗?

答案1

以下是您需要的内容。您遇到的问题是没有提供正确的路径。由于您使用的是-Recurse,因此路径$Path\$($File.Basename).zip并不总是正确的,因为它是正确的仅有的如果该文件是 的直接子文件$Path

$path = "C:\logs"
Get-ChildItem $path\*.pdf -Recurse | ForEach-Object {
    if( Test-Path "$($_.DirectoryName)\$($_.Basename).zip" ) {
        Remove-Item "$($_.DirectoryName)\$($_.Basename).pdf"
    }
}

相关内容