0
您需要 登录 才可以下载或查看,没有账号?欢迎注册
使用道具 举报
function Compare-FilesByteByByte { param ( [string]$FilePath1, [string]$FilePath2 ) # 检查文件大小是否相同 $file1Size = (Get-Item $FilePath1).Length $file2Size = (Get-Item $FilePath2).Length if ($file1Size -ne $file2Size) { return $false } # 打开文件流 $stream1 = [System.IO.File]::OpenRead($FilePath1) $stream2 = [System.IO.File]::OpenRead($FilePath2) try { # 逐字节比对 for ($i = 0; $i -lt $file1Size; $i++) { $byte1 = $stream1.ReadByte() $byte2 = $stream2.ReadByte() if ($byte1 -ne $byte2) { return $false } } return $true } finally { # 关闭文件流 $stream1.Close() $stream2.Close() } } function Remove-DuplicateFiles { param ( [string[]]$Folders ) # 用于存储已检查的文件路径 $checkedFiles = @() # 遍历所有文件夹 foreach ($folder in $Folders) { # 获取文件夹中的所有文件 $files = Get-ChildItem -Path $folder -Recurse -File foreach ($file in $files) { $isDuplicate = $false # 与已检查的文件逐字节比对 foreach ($checkedFile in $checkedFiles) { if (Compare-FilesByteByByte -FilePath1 $file.FullName -FilePath2 $checkedFile) { $isDuplicate = $true Write-Host "发现重复文件: $($file.FullName) 与 $checkedFile" # 删除当前文件 Remove-Item -Path $file.FullName -Force Write-Host "已删除文件: $($file.FullName)" break } } # 如果文件不是重复的,则添加到已检查的文件列表中 if (-not $isDuplicate) { $checkedFiles += $file.FullName } } } } # 文件夹路径 $folderA = "C:\Users\Administrator\Documents\新建文件夹 (2)" $folderB = "C:\Users\Administrator\Desktop\新建文件夹2" $folderC = "D:" Remove-DuplicateFiles -Folders @($folderA, $folderB, $folderC)复制代码
本版积分规则 发表回复 回帖并转播 回帖后跳转到最后一页
小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )
GMT+8, 2025-2-22 15:01 , Processed in 0.038245 second(s), 18 queries .
Powered by Discuz! X3.5
© 2001-2025 Discuz! Team.