Windows: busque y elimine archivos duplicados con PowerShell
Vivimos en un mundo de big data que es a la vez una bendición y una maldición. Big data suele significar una gran cantidad de archivos, como fotos y vídeos, y, finalmente, una gran cantidad de espacio de almacenamiento. Los archivos se mueven accidental o deliberadamente de un lugar a otro sin considerar primero que estos archivos duplicados consumen cada vez más espacio de almacenamiento. Quiero cambiar eso contigo en esta publicación de blog. Buscaremos archivos duplicados y luego los trasladaremos a una ubicación de almacenamiento diferente para su posterior revisión.
La meta
Con mi guión en mano podrás realizar el escenario descrito. Asegúrese de que su computadora ejecute Windows PowerShell 5.1 o PowerShell 7.
- Abra PowerShell (tecla Windows + X + A)
Navegue hasta la ubicación del script. Introduzca la ruta completa a la carpeta de destino. Esta carpeta es nuestro objetivo para buscar archivos duplicados.
Aparecerá una ventana para seleccionar archivos duplicados según el valor hash. Todos los archivos seleccionados serán movidos a C:\DuplicatesCurrentDate
Luego, los archivos duplicados se mueven a la nueva ubicación. Volverá a ver aparecer una nueva ventana que muestra los archivos movidos para su posterior revisión.
Lo que me lleva al código.
La secuencia de comandos
Aquí está el código para descargar.
buscar_archivos_duplicados.ps1
Y aquí está el código completo. Copie el código en su computadora local y ábralo en PowerShell ISE, Visual Studio Code o un editor de su elección. Presione F5 (PowerShell ISE o VS Code).
# .SYNOPSIS
# find_ducplicate_files.ps1 finds duplicate files based on hash values.
# .DESCRIPTION
# Prompts for entering file path. Shows duplicate files for selection.
# Selected files will be moved to new folder C:\Duplicates_Date for further review.
# .EXAMPLE
# Open PowerShell. Nagivate to the file location. Type .\find_duplicate_files.ps1 OR
# Open PowerShell ISE. Open find_duplicate.ps1 and hit F5.
# .NOTES
# Author: Patrick Gruenauer | Microsoft MVP on PowerShell [2018-2020]
# Web: https://sid-500.com
############# Find Duplicate Files based on Hash Value ###############
''
$filepath = Read-Host 'Enter file path for searching duplicate files (e.g. C:\Temp, C:\)'
If (Test-Path $filepath) {
''
Write-Warning 'Searching for duplicates ... Please wait ...'
$duplicates = Get-ChildItem $filepath -File -Recurse `
-ErrorAction SilentlyContinue |
Get-FileHash |
Group-Object -Property Hash |
Where-Object Count -GT 1
If ($duplicates.count -lt 1)
{
Write-Warning 'No duplicates found.'
Break ''
}
else {
Write-Warning "Duplicates found."
$result = foreach ($d in $duplicates)
{
$d.Group | Select-Object -Property Path, Hash
}
$date = Get-Date -Format "MM/dd/yyy"
$itemstomove = $result |
Out-GridView -Title `
"Select files (CTRL for multiple) and press OK. Selected files will be moved to C:\Duplicates_$date" `
-PassThru
If ($itemstomove)
{
New-Item -ItemType Directory `
-Path $env:SystemDrive\Duplicates_$date -Force
Move-Item $itemstomove.Path `
-Destination $env:SystemDrive\Duplicates_$date -Force
''
Write-Warning `
"Mission accomplished. Selected files moved to C:\Duplicates_$date"
Start-Process "C:\Duplicates_$date"
}
else
{
Write-Warning "Operation aborted. No files selected."
}
}
}
else
{
Write-Warning `
"Folder not found. Use full path to directory e.g. C:\photos\patrick"
}
Créditos
Gracias a la frase de Kenward Bradley que me despierta la idea de escribir este guión. Aquí tienes:
http://kenwardtown.com/2016/12/29/find-duplicate-files-with-powershell/


