Bat para copiar subcarpeta de una carpeta creada diariamente con diferente nombre y fecha

Estoy creando un .bat para que copie una subcarpeta que se encuentra dentro de una carpeta raíz que es creada automáticamente con fecha del día.

Ejemplo:

La carpeta raíz se llama "20180802" y la subcarpeta que se encuentra dentro se llama "tarifa" la carpeta "tarifa" es la que requiero copiar diariamente pero no encuentro la forma de tomar en referencia en el bat que la carpeta raíz "20180802" que cambia a diario de nombre.

1 respuesta

Respuesta

No acabo de entenderte del todo.

Entiendo que hay una serie de carpetas con nombres de muchas fechas consecutivas. Algo como

...

20180730

20180731

20180801

20180802

...

En cada una de esas carpetas hay otra subcarpeta de nombre "tarifa" que es la que quieres copiar. Pero, ¿quieres copiarlas todas o solo la última? Y, ¿El destino de la copia es fijo o no?

Por ejemplo, si te sitúas en la carpeta raíz de las carpetas anteriores y tecleas DIR /S /B tarifa* te saldrá el path completo de todas las carpetas "tarifa". Esto lo podrías usar en bucle FOR.

Si concretamos algo más te puedo poner un ejemplo más concreto.

exactamente existen varias carpetas con muchos nombres de fechas consecutivas y dentro existe de cada una existe una subcarpeta llamada "tarifa" (es la que se requiere copiar su contenido).

este es el scrit que copia la carpeta "tarifa"

@echo off&setlocal
set dest="192.168.91.14\CONTABILIDAD"
set org="192.168.91.79\CONTABILIDAD\20180731\tarifa"

ROBOCOPY %org% %dest% /E /R:0 /W:0 /V /MAXAGE:5 /DCOPY:T

Pero sigo sin tener claro si quieres copiar solo los archivos contenidos en todas las carpetas de nombre aaaammdd\tarifa (y en ese caso que hacer si hay archivos con el mismo nombre) sin recrear la estructura o alguna otra cosa. A lo mejor me lo estás diciendo en la sintaxis del ROBOCOPY, pero es un comando que no uso a menudo y el equipo que tengo disponible en este momento es un XP y ese comando no existe en esta versión de Windows.

Ya he podido probar en Windows10 y con tu script. Mi impresión es que no quieres copiar la estructura sino los archivos de la carpeta "tarifa". Me parece que deberías preceder las IPs de la doble barra (\\) pero supongo que no es ese el único problema. Intuyo que el problema pueda tener que ver con el hecho de que no parece que los comandos de msdos permitan comodines en las zonas intermedias de la especificación de un path. Por ejemplo algo como:

DIR C:\TMP\*\TEXTO.TXT

Dará el error "El nombre de archivo, el nombre de directorio o la sintaxis de la etiqueta del volumen no son correctos." y por más vueltas que le doy no consigo salvar ese obstáculo.

La única posibilidad que le veo apuntaría en la dirección que te sugerí inicialmente, pero con la complicación añadida de tener que hacer un NET USE para poder tratar como una unidad de red la carpeta base de las carpetas aaaammdd. Sería algo así:

@echo off&setlocal
set dest="\\192.168.91.14\CONTABILIDAD"
set org="\\192.168.91.79\CONTABILIDAD"
net use z: %org% /persistent:n
for /f %%i in ('dir /b /s z:tarifa') do (ROBOCOPY %%i %dest% /E /R:0 /W:0 /V /MAXAGE:5 /DCOPY:T)
net use z: /delete

Ya me dirás.

¿Probaste lo que te sugerí?

Deberías decir algo, ¿no?

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas