我在一个文件夹中有1000个文件,在另一个文件夹中有类似的命名文件。目标是在两个文件夹中都有相同的文件名,但保留文件扩展名。
我想运行一个脚本来比较每个文件夹的内容(文件扩展名除外)以及它们是否在文件夹中如果在folder1中有一个名为BILL但在folder2中没有的文件则会删除该文件在其中一个文件夹中。
示例:
如果RandomFile1
中不存在TempFolder2
,则会将其从TempFolder1
删除,反之亦然。
答案 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