比较文件夹内容与另一个文件夹并删除

时间:2017-05-14 19:19:44

标签: powershell vbscript

我在一个文件夹中有1000个文件,在另一个文件夹中有类似的命名文件。目标是在两个文件夹中都有相同的文件名,但保留文件扩展名。

我想运行一个脚本来比较每个文件夹的内容(文件扩展名除外)以及它们是否在文件夹中如果在folder1中有一个名为BILL但在folder2中没有的文件则会删除该文件在其中一个文件夹中。

示例:

  • C:\ TempFolder1 \ RandomFile1
  • C:\ TempFolder2

如果RandomFile1中不存在TempFolder2,则会将其从TempFolder1删除,反之亦然。

1 个答案:

答案 0 :(得分:1)

这里你去...这个脚本假设你不是通过子文件夹递归查看,忽略父文件夹下面的目录...它通过拉动文件列表,然后比较每个文件夹子文件&#39来工作; BaseName ,包含另一个BaseNames列表,然后删除唯一的BaseNames:

$folder1 = "C:\TempFolder1"
$folder2 = "C:\TempFolder2"

$files1 = Get-ChildItem $folder1 | Where-Object {$_.PsIsContainer -eq $false}
$files2 = Get-ChildItem $folder2 | Where-Object {$_.PsIsContainer -eq $false}

# Remove unique file baseNames from $folder1 that don't exist in $folder2
$files1 | Where-Object {$files2.BaseName -notcontains $_.BaseName} | Remove-Item -Force

# Remove unique file baseNames from $folder2 that don't exist in $folder1
$files2 | Where-Object {$files1.BaseName -notcontains $_.BaseName} | Remove-Item -Force