Tengo configurada una NAS en un servidor, y la utilizo para respaldar la carpeta donde está la BDD de un sistema administrativo. Esta NAS es algo básica, y no hay mucho que se pueda configurar más allá de las rutas a respaldar. El detalle es que en ocasiones (bastante seguido), duplica algunos archivos, creando una copia exacta de estos, pero añadiéndoles la hora y fecha en el nombre. No hay forma de evitarlo, y después de unos meses funcionando así, ya me ha creado bastantes Gigas de datos duplicados.
Código:
CAC00007.dbf --->Ejemplo de archivo original
CAC00007-2016-11-13_09-40-41-849.dbf --->Ejemplo de archivo duplicado
Llegados a este punto, me decidí por crear un batch que me eliminara los archivos que se iban duplicando. Primero creé este (al cual nombré ruta.bat),para eliminar los duplicados:
Código:
set nombre=%~n1
set last4=%nombre:~-4%
set guion=%last4:~0,1%
set last13=%nombre:~-13%
set guionb=%last13:~0,1%
IF "%guion%"=="-" (
goto :segundoif
) ELSE (
goto :terminar
)
:segundoif
IF "%guionb%"=="_" (
del "%rutafor%"
) ELSE (
goto :terminar
)
:terminar
En el código anterior hago referencia a la variable "%rutafor%", la cual declaro en este otro batch, el cual pensaba utilizar para correr el ruta.bat para cada uno de los archivos, en todos los subdirectorios:
Código:
for /R "C:\Directorio_a_respaldar_con_la_NAS\" %%v in (*) do (
set rutafor=%%v
ruta %%v)
Tengo ambos archivos bat en la carpeta principal, y funciona: me borra solo los archivos duplicados de todos los subdirectorios, excepto de las carpetas que contienen espacios. Me parece que el problema es que al tratar de extraer el nombre, mediante nombre=%~n1, la ruta me la toma hasta el primer espacio. Sé que tal vez no sea la forma más eficiente de hacer esto, pero en principio debería funcionar...
Agradezco de antemano cualquier ayuda o sugerencia. ¡Saludos!