elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  BATCH AYUDA ¿Cómo asignar a una variable, una ruta que contiene espacios?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: BATCH AYUDA ¿Cómo asignar a una variable, una ruta que contiene espacios?  (Leído 3,141 veces)
Hues0s90

Desconectado Desconectado

Mensajes: 1


Ver Perfil
BATCH AYUDA ¿Cómo asignar a una variable, una ruta que contiene espacios?
« en: 22 Noviembre 2016, 07:05 am »

Hola a todos. Soy nuevo en el foro, pero en bastantes ocasiones he navegado por aquí como invitado, e indirectamente me han ayudado a salir de varias dudas. Llevo bastantes horas lidiando con esto, y por más que he investigado en internet, no encuentro la forma de hacer lo que quiero. Espero que alguien de aquí pueda orientarme, debo de admitir que no tengo mucha experiencia programando. Sin más, paso a exponer mi duda:

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!



« Última modificación: 22 Noviembre 2016, 07:08 am por Hues0s90 » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[BATCH] Asignar a una variable el resultado de un comando (Solucionado)
Scripting
TaRGaZo 2 18,885 Último mensaje 30 Junio 2009, 10:59 am
por TaRGaZo
[Batch] Preguntar una ruta y almazenarla en una variable
Scripting
Geormarsch 4 3,020 Último mensaje 24 Enero 2012, 14:33 pm
por Geormarsch
Dud sobre un script ¿como se hace? y duda variable con espacios BATCH
Scripting
r7pyrred 3 3,974 Último mensaje 21 Noviembre 2012, 23:59 pm
por Eleкtro
asignar ruta a variable
Scripting
nniki999 4 3,444 Último mensaje 17 Enero 2016, 14:57 pm
por nniki999
Asignar letra USB a variable (batch)
Scripting
keypro 2 3,307 Último mensaje 27 Mayo 2016, 10:02 am
por keypro
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines