Búsqueda de sitios web

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.

  1. Abra PowerShell (tecla Windows + X + A)
  2. 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.

  3. Aparecerá una ventana para seleccionar archivos duplicados según el valor hash. Todos los archivos seleccionados serán movidos a C:\DuplicatesCurrentDate

  4. 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/

Artículos relacionados