Caso de uso: En la carpeta de descargas tenemos varios archivos llamados Documento (1).pdf, “Documento (2).pdf…” Queremos borrar “Documento (2).pdf” si y solo si su contenido es igual al de “Documento (1).pdf”.
Este archivo de proceso por lotes permite hacerlo, para archivos con número igual o inferior a 9 (es decir, no funcionará con “Documento (10).pdf”).
Nota 1. Este archivo funciona solo en la carpeta actual del entorno de línea de comandos. Por tanto, no lo ejecute con un clic. Use la línea de comandos para ejecutarlo en la carpeta que a usted le interese.
Nota 2. Sea cauto. Nunca ejecute un script (.vbs, .bat, .cmd…) obtenido de internet sin haber comprobado primero su código fuente. Si no comprende el código fuente, es mejor no lo ejecute.
@echo off rem cambie por set debug=on para activar la depuración. set debug= if not %debug%.==. echo on setlocal enabledelayedexpansion rem test delayed expansion if NOT "%CD%"=="!CD!" goto :end SET num1=9 SET /A num2=%num1%-1 :loop echo bucle con Num1=!num1! y Num2=!num2! if NOT %debug%.==. pause for %%a in (*"(%num1%)".*) do ( set name=%%~na rem quita espacio paréntesis cifra paréntesis set name=!name:~0,-4! echo Name="!name!" if "!num2!"=="" ( rem Me obligan a usar comillas! set filename="!name!%%~xa" ) else ( rem Me obligan a usar comillas! set filename="!name! (%num2%)%%~xa" ) rem referencias a filename sin comillas porque las lleva rem puestas desde la instrucción set. if exist !filename! ( Echo comparando "%%a" y !filename! comp /m "%%a" !filename! if errorlevel 1 ( echo "%%a" y !filename! existen, echo pero son distintos. ) else ( rem Borrar el archivo con número mayor (num1) rem Comprobar que no estemos comparando el archivo rem consigo mismo. if NOT "%%a"==!filename! del /p "%%a" ) ) else ( echo No existe !filename! ) if NOT %debug%.==. pause ) if "!num2!"=="" goto :end set num1=!num2! set /a num2=!num1!-1 if "!num2!"=="-1" goto :end if "!num2!"=="0" set num2= echo !num1!, !num2! goto :loop :end