[Guía paso a paso] Cómo encontrar archivos duplicados con PowerShell

Aprenderá a usar PowerShell para encontrar archivos duplicados y eliminarlos. Además, encontrará una herramienta más intuitiva para escanear y eliminar archivos duplicados de forma sencilla y segura.

Shirley

Por Shirley / Actualizado el 25/07/2025

Comparte esto: instagram reddit

¿Puedo usar PowerShell para encontrar archivos duplicados en una computadora con Windows?

PowerShell, un shell de línea de comandos y lenguaje de scripting, está diseñado para automatizar actividades administrativas, mantener la configuración del sistema y gestionar eficazmente diversos procedimientos relacionados con el sistema. Está basado en .NET Framework, lo que le otorga acceso a una gran variedad de funciones y bibliotecas del sistema, convirtiéndolo en una herramienta indispensable para una amplia gama de usuarios.

Una de las características destacadas de PowerShell es su capacidad para interactuar con el sistema operativo Windows, los servicios y las aplicaciones mediante comandos. Estos comandos están diseñados para ser fáciles de usar y seguir una convención de nomenclatura consistente, lo que facilita su descubrimiento y uso eficaz.

La versatilidad y extensibilidad de PowerShell lo convierten en una herramienta invaluable para localizar y eliminar archivos duplicados en un PC con Windows. Puede buscar en su sistema, descubrir archivos duplicados según diversos criterios, como contenido, nombre o tamaño, y eliminarlos de forma segura para liberar espacio crítico en el disco con algunos comandos y scripts específicos.

Usar PowerShell para buscar archivos duplicados

En esta sección, le proporcionaremos una guía paso a paso sobre cómo usar PowerShell para encontrar y eliminar archivos duplicados, mostrando el script para lograr este objetivo. Sin embargo, antes de comenzar, debe saber que existe el riesgo de perder datos o sufrir consecuencias irreversibles si escribe los comandos incorrectos. Asegúrese de comprender e ingresar los comandos correctos.

Etapa 1. Utilice el cmdlet Get-FileHash para comprobar los archivos duplicados.

El cmdlet Get-FileHash de PowerShell sirve para calcular la suma de comprobación de un archivo. Este hash se puede utilizar para identificar un archivo de forma única. En este artículo utilizaremos el valor hash para identificar archivos duplicados. La sintaxis del comando es la siguiente:

Get-FileHash -Path file_path -Algorithm hashing_algorithm

Debe escribir la ruta de almacenamiento específica de los archivos que desea buscar. Por ejemplo: Get-FileHash -Path 'D:\ISO\WinPE.iso' -Algorithm SHA512

Check duplicate files

Cuando no se especifica ningún método de hash, el valor predeterminado es SHA256, que es suficiente en la mayoría de los casos. El hash se utiliza para validar la integridad de los archivos, especialmente al descargar datos de Internet.

Get-FileHash admite la entrada de canalización, lo que nos permite utilizarlo junto con el cmdlet Get-ChildItem para calcular el hash de cada elemento proporcionado por Get-ChildItem.

Ahora podemos encontrar archivos duplicados.

Opción 1. Buscar archivos duplicados basándose en el hash

El comando siguiente obtiene de forma recursiva todos los archivos de una carpeta, los envía a Get-FileHash para generar su hash y, a continuación, los agrupa en función de los valores hash coincidentes. Debe sustituir la ruta en función del resultado del cmdlet Get-FileHash según su situación.

$srcDir = "D:\MyScripts" (Aquí, cambie la ruta según su caso.)
Get-ChildItem $srcDir -File -Recurse `
    | Get-FileHash | Group -Property Hash `
    | where {$_.Count -gt 1} | foreach { $_.Group | select Path, Hash}

Find duplicate files via PowerShell

Debe tener en cuenta que este comando funciona mejor con archivos pequeños. Es posible que encuentre dificultades si el directorio de origen contiene una cantidad significativa de archivos grandes que eliminar.

El cálculo del hash es un procedimiento que lleva mucho tiempo, y el programa mencionado lo realiza para cada archivo, independientemente de su tamaño. Cuando se utiliza en un directorio con una gran cantidad de archivos, el programa tardará una eternidad en detectar los duplicados.

Opción 2. Buscar archivos duplicados basándose en la longitud y el hash.

En comparación con el comando anterior, la búsqueda de archivos duplicados según su longitud y hash es más optimizada.

El tamaño de los archivos debe coincidir para que sean duplicados, lo que significa que los archivos de diferentes tamaños no pueden ser duplicados. Sin duda, ya está familiarizado con la propiedad Length del cmdlet Get-ChildItem de PowerShell. No es necesario realizar ningún cálculo, ya que el valor Length se toma del directorio.

El secreto está en calcular solo los hash de los archivos de la misma longitud, ya que sabemos que los archivos de diferentes longitudes no pueden ser duplicados. De esta manera, el tiempo total del comando se reduce considerablemente. Debe sustituir la ruta en función del resultado del cmdlet Get-FileHash según su situación.

$srcDir = "D:\ISO Files" (Aquí, cambie la ruta según su caso)
Get-ChildItem -Path $srcDir -File -Recurse | Group -Property Length `
    | where { $_.Count -gt 1 } | select -ExpandProperty Group | Get-FileHash `
    | Group -Property Hash | where { $_.count -gt 1 }| foreach { $_.Group | select Path, Hash }

Move duplciate files via PowerShell

Puede ver este comando que agrupa archivos del mismo tamaño y luego envía esos archivos a Get-FileHash para determinar su hash.

Etapa 2. Eliminar archivos duplicados con PowerShell

Después de encontrar archivos duplicados con PowerShell, debemos tratarlos adecuadamente. No es recomendable eliminar los duplicados inmediatamente mientras se trabaja con archivos esenciales. En su lugar, puede reubicarlos en otro directorio, probablemente en un disco independiente con espacio libre suficiente. Con nuestro nuevo comando, esto es muy sencillo. Basta con introducir el resultado de la operación anterior en el cmdlet Move-Item.

# Define source directory
$srcDir = "D:\ISO Files"  (Aquí, cambie la ruta según su caso)
# Define destination directory
$targetDir = "E:\DuplicateFiles\$(Get-Date -Format 'yyyyMMdd')" (Aquí es donde se almacenarán esos archivos de destino).
# Create destination directory
if(!(Test-Path -PathType Container $targetDir)){ New-Item -ItemType Directory -Path $targetDir | Out-Null }
# Move duplicate files to a different location
Get-ChildItem -Path $srcDir -File -Recurse | group -Property Length | where { $_.Count -gt 1 } `
        | select -ExpandProperty Group | Get-FileHash | group -Property Hash `
        | where { $_.Count -gt 1 }| foreach { $_.Group | select -Skip 1 } `
        | Move-Item -Destination $targetDir -Force -Verbose

Move duplciate files via PowerShell

Lo que hay que tener en cuenta es que hemos utilizado -Skip 1 para dejar un archivo en el directorio de origen mientras se mueven otros duplicados al directorio de destino especificado. Una vez movidos, puede revisarlos manualmente más tarde y eliminarlos, si es necesario. Si está trabajando con un directorio de origen enorme con millones de archivos, es recomendable evitar el uso del parámetro -verbose con Move-Item.

Si su directorio contiene pocos archivos, es posible que desee elegir manualmente cuáles desea reubicar y cuáles desea dejar en el directorio de origen:

# Define source directory
$srcDir = "D:\ISO Files"
# Define destination directory
$targetDir = "E:\DuplicateFiles\$(Get-Date -Format 'yyyyMMdd')"
# Create destination directory
if(!(Test-Path -PathType Container $targetDir)){ New-Item -ItemType Directory -Path $targetDir | Out-Null }
# Manually choose duplicate files to move to target directory
Get-ChildItem -Path $srcDir -File -Recurse | Group -Property Length `
    | where { $_.Count -gt 1 } | select -ExpandProperty Group | Get-FileHash `
    | Group -Property Hash | where { $_.count -gt 1 } | foreach { $_.Group | select Path, Hash } `
    | Out-GridView -Title "Select the file(s) to move to `"$targetDir`" directory." -PassThru `
    | Move-Item -Destination $targetDir -Force -Verbose

Remove duplicate files

Si ha realizado una copia de seguridad de sus archivos, también puede mover directamente los archivos duplicados con PowerShell:

# Define source directory
$srcDir = "D:\ISO Files"
# Permanently delete duplicate files; use with caution
Get-ChildItem -Path $srcDir -File -Recurse | group -Property Length | where { $_.Count -gt 1 } `
        | select -ExpandProperty Group | Get-FileHash | group -Property Hash `
        | where { $_.Count -gt 1 }| foreach { $_.Group | select -Skip 1 } `
        | Remove-Item -Force -Verbose

Manually remove files PowerShell

Un buscador de archivos duplicados fácil de usar 

Aunque PowerShell se puede utilizar para localizar y borrar archivos duplicados, sus comandos pueden ser bastante complejos y arriesgados de emplear. Un solo error durante el proceso podría dañar su directorio de archivos. En tales casos, un buscador de archivos duplicados fácil de usar se convierte en una herramienta esencial. Para ello, recomendamos utilizar AOMEI Partition Assistant for Cleanup, una versátil utilidad de limpieza de discos y particiones compatible con todos los PC con Windows.

Su función "Archivos duplicados" ofrece a los usuarios una solución rápida y eficaz. Realiza análisis rápidos para localizar archivos duplicados (incluidas imágenes, vídeos, audio, documentos y archivos), lo que permite a los usuarios establecer rutinas de limpieza automatizadas para sus dispositivos sin necesidad de utilizar comandos complejos.

AOMEI Partition Assistant for Cleanup

Libera espacio en disco para que tu PC funcione de forma fluida y eficiente.

Paso 1. Inicie la búsqueda de archivos duplicados. Instale y ejecute AOMEI Partition Assistant for Cleanup. Haga clic en la pestaña "Archivos duplicados".

Find Duplicate Files

Paso 2. Seleccione una ruta para escanear archivos duplicados. Puede hacer clic en "Escanear ahora" para iniciar el escaneo de la unidad C: de su sistema. O bien, haga clic en "Escaneo personalizado" para seleccionar manualmente las rutas que desea escanear. (Aquí, tomamos el "Escaneo personalizado" como ejemplo).

Custom Scan

Paso 3. Después de hacer clic en "Escaneo personalizado", se mostrarán todas las unidades locales y externas de su PC. También puede hacer clic en el botón "Agregar ruta" y aparecerá una ventana para explorar carpetas. De este modo, podrá añadir más rutas en este PC, como Escritorio, Descargas y otras rutas de carpetas.

Add Paths

Paso 4. Una vez añadidas las rutas necesarias, puede hacer clic en el botón "Escanear ahora" para iniciar el proceso de escaneo.

Scan Now

Paso 5. El proceso de escaneo puede tardar un tiempo. Una vez completado el escaneo, se mostrarán todos los archivos duplicados. Puede hacer clic en el botón situado detrás para localizarlos.

Scan Now

Paso 6. Seleccione los archivos duplicados para iniciar la eliminación. Puede seleccionar manualmente los archivos duplicados o hacer clic en el botón "SelecInteligente" para seleccionar automáticamente los archivos duplicados innecesarios que desea eliminar.

Consejo: Si la opción "SelecInteligente" está marcada, solo se desmarcará el archivo duplicado más antiguo. Esto significa que todos los archivos duplicados, excepto el más antiguo, se marcarán para su eliminación. (El archivo más antiguo es el que se creó primero. Este archivo no se eliminará. Todos los demás archivos duplicados se consideran copias del archivo más antiguo).

Smart Select

Si selecciona manualmente todas las copias de los archivos duplicados, aparecerá una ventana emergente con una advertencia para que conserve al menos una copia de los archivos duplicados. Si realmente desea eliminar todas las copias de los archivos duplicados, puede hacer clic en «Aceptar» para que se seleccionen todas las copias de los archivos duplicados para su eliminación.

Warning

Después de seleccionar los archivos duplicados innecesarios, haga clic en el botón «Limpiar ahora» para iniciar la eliminación.

Clean Now

Paso 7. Eliminación correcta. La eliminación puede tardar un tiempo. Una vez finalizado el proceso, los archivos seleccionados se eliminarán y aparecerá una ventana indicando que la limpieza se ha completado, en la que se mostrará la cantidad total de datos eliminados.

Clean Completed

Resumen

PowerShell es una herramienta muy práctica para que los usuarios de Windows modifiquen la configuración del sistema. Sin embargo, requiere un alto nivel de conocimientos informáticos para los usuarios normales. Por lo tanto, si solo desea eliminar los archivos duplicados, un eliminador de archivos duplicados es una herramienta muy segura.

Shirley
Shirley · Redactor
Shirley es una editora en español de AOMEI Technology; tiene una gran pasión en su trabajo y en su vida y le encanta ayudar a la gente con las ideas y métodos que se mencionan en sus artículos. Espera ser una dadora en su vida, y disfrutar de cada día simple pero feliz. En su tiempo libre, le encanta leer libros y ver películas con su familia para disfrutar de un buen día.