Apagada docs

Aprendiendo a programar el pasado

Herramientas de usuario

Herramientas del sitio


es:bat:borrar_copias_numeradas_de_un_archivo

Borrar copias numeradas de un archivo

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.

delete_numbered_duplicates.cmd
@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
Este sitio web utiliza cookies. Al utilizar el sitio web, usted acepta almacenar cookies en su computadora. También reconoce que ha leído y entendido nuestra Política de privacidad. Si no está de acuerdo abandone el sitio web.Más información
es/bat/borrar_copias_numeradas_de_un_archivo.txt · Última modificación: 2024/06/19 04:23 por nepenthes