He creado este “programa”, los que sabéis de informática… ¡Respetarme, que soy mocito!
Para buscar archivos duplicados por nombre de la carpeta donde esté y mandar uno de ellos a la carpeta “1 DuplicadoS” que se crea en esa carpeta para revisarlos y borrarlos.
A mí me ha quitado 500gb de fotos duplicadas del movil, que son las que voy guardando de vez en cuando y ¡ya revisaré! y nunca he revisado.
No borra nada, o por lo menos no he puesto que borre nada, sólo lo manda a esa carpeta
Os lo subo en TXT. Solo tenéis que abrir un procesador de texto o el blog de notas de win copiarlo y darle el nombre que queráis acabado en .bat.
Si hay algún técnico y lo revisa ¡mas mejor!
Quien lo utilice bajo su responsabilidad.
![]()
@echo off
setlocal enableDelayedExpansion
rem Define la carpeta de destino para los duplicados
set “duplicados_folder=1 DuplicadoS”
rem Obtiene la ruta de la carpeta actual donde se ejecuta el script
set “current_folder=cd”
rem =========================================================
rem ANUNCIO DE ADVERTENCIA SIMULADO
rem =========================================================
cls
echo.
echo.
echo ====================================================
echo = A D V E R T E N C I A =
echo ====================================================
echo.
echo Este script revisara la siguiente carpeta:
echo.
echo current_folder
echo.
echo Asegurese de que esta es la carpeta que desea revisar.
echo Los duplicados seran movidos a la carpeta “duplicados_folder”.
echo.
echo ====================================================
echo.
echo.
pause
cls
rem =========================================================
rem FIN DEL ANUNCIO
rem =========================================================
rem Crea la carpeta si no existe
if not exist “duplicados_folder” (
mkdir “duplicados_folder”
echo Se ha creado la carpeta para duplicados: current_folder%duplicados_folder%
)
echo.
echo =========================================================
echo Iniciando la busqueda de duplicados por NOMBRE…
echo Carpeta raiz: current_folder
echo =========================================================
echo.
rem Usar un archivo temporal para guardar los nombres de archivos encontrados
set “temp_name_list=TEMP\processed_names.txt”
if exist “temp_name_list” del “temp_name_list”
rem Bucle principal para procesar archivos de imagen
for /R “current_folder” %%A in (*.jpg *.jpeg *.png *.gif *.bmp *.tiff) do (
rem Obtiene solo el nombre del archivo (con extension)
set “filename=%%~nxA”
set “filepath=%%~fA”
rem Muestra el archivo que se esta revisando
echo Revisando: "!filepath!"
rem Ignora los archivos que ya esten en la carpeta de duplicados
for %%B in ("!filepath!") do set "parent_dir=%%~dpB"
if /i not "!parent_dir:~0,-1!"=="%current_folder%\%duplicados_folder%" (
rem Busca si ya hemos visto un archivo con este nombre
findstr /I /C:"!filename!" "%temp_name_list%" >nul
if errorlevel 1 (
rem Si no se encuentra, es el primer archivo con ese nombre, lo guardamos
echo !filename! >> "%temp_name_list%"
) else (
rem Si se encuentra, es un duplicado por nombre, lo movemos
echo -> Duplicado encontrado!
rem Evita sobreescribir archivos con el mismo nombre en la carpeta de duplicados
set "new_filename=!filename!"
set /a "counter=1"
:check_name
if exist "%duplicados_folder%\!new_filename!" (
for %%F in ("!filename!") do (
set "name_part=%%~nF"
set "ext_part=%%~xF"
)
set "new_filename=!name_part!_!counter!!ext_part!"
set /a "counter+=1"
goto check_name
)
rem Mueve el archivo a la carpeta de duplicados
move "!filepath!" "%duplicados_folder%\!new_filename!" >nul
echo -> Archivo movido a "%duplicados_folder%\!new_filename!"
echo.
)
)
)
echo.
echo =========================================================
echo Proceso finalizado.
echo Se han movido los duplicados por nombre a la carpeta ‘duplicados_folder’.
echo =========================================================
if exist “temp_name_list” del “temp_name_list”
pause
Quien lo utilice bajo su responsabilidad.
![]()
Lo he probado y no funciona bien copiado por quí, os dejo un enlace para que lo descargueis, este archivo .bat
Si no se puede esto que se borre automáticamente.