Batch para copiar archivos con restricciones

Estoy buscando crear un batch para copiar todos los archivos de una ruta a otra, nunca he programado en batch pero me surgió una solicitud en el trabajo y por lo que he leído, ya tengo un código.

Necesito que el archivo inicie con 2 lentras y termine en .DBF, ejemplo (VT1.DBF), esa es una y la otra restricción es que solo se copie los archivos de este mes ( el mes en curso).

1 Respuesta

Respuesta
1

Ya probaste con un For y xcopy?

Así:

@echo off
for /f "delims=" %%a in ('xcopy /l /e /y "C:\Carpeta origen\VT*.DBF" ^|find ":"') do xcopy "%%a" "C:\Carpeta destino"

Andy

Disculpa si esta muy larga la línea, para que se vea mejor la cortaré así:

@echo off
for /f "delims=" %%a ^
in ('xcopy /l /e /y "C:\Users\andym\Desktop\Origen\VT*.DBF" ^|find ":"') ^
do xcopy "%%a" "C:\Users\andym\Desktop\Destino"

Con ^ continuas la linea abajo

Andy

Por cierto el código que intentaste mostrar no se ve, al menos yo no lo veo, la etiqueta código esta vacía:


PD: En el código que te di recuerda cambiar la ruta de las carpetas.

Tambien sabes batch? Buena Andy, sabes base  de datos tambien? Andy he ejecutado el batch acoplando las modificaciones pero me sale el error "No se esperaba %%a en este momento.

¿Cómo lo has ejecutado? Pediste un batch, un batch es un archivo .bat osea lo pegas en un TXT pero en lugar de .txt le cambias a .bat la extensión, y le das doble click y se ejecuta.

Eso es un lenguaje de script, se llama DOS.

¿A qué te refieres con saber base de datos? Si te refieres a lenguajes de query como MySQL, sí.

@echo off
for /f "delims=" %%a ^
in ('xcopy /l /e /y "C:\Users\andym\Desktop\Origen\VT*.DBF" ^|find ":"') ^
Do xcopy "%%a" "C:\Users\andym\Desktop\Destino"

Efectivamente, si lo ejecute de esa forma, para serte sincero solo copie y pegue JA JA. Mis dudas (Que no he encontrado en internet) el "delims=", el %%a, el |find":"', básicamente eso es lo que no entiendo, el resto si logro entenderlo. Por favor dame una mano con eso, ya que me tira error al ejecutarlo. Gracias

Ya le estoy agarrando la maña, ya hice que funcione sin la delimitación por fechas, entiendo que tenga que ver esos parámetros por favor ayúdame con el significado de estos "delims=", el %%a, el |find":"' para profundizarlos y una cosita más,¿por favor tu crees que haya alguna forma de hacer una aplicación con este código o integrarlo a mi macro? Ya que (te cuento) inicialmente la idea era ejecutar una macro que procese información de la vpn pero la macro al jalar la data y procesarla para convertir en reportes se caía (por velocidad de vpn) pero con este batch ya hice la prueba y todo ok, quisiera integrarlos o en todo caso que el usuario ejecute una aplicación (para que no ejecute solo el batch). Muchas Gracias Andy!

Hola Andy, he llegado a esto:

ECHO %HOY%
SET AAA=%FECHA:~6,4%
SET MMM=%FECHA:~3,2%
SET fecm=%MMM%/%AAA%
ECHO %fecm%
ECHO IF (%Hoy%) == %fecm% (xcopy /e "D:\temp\VT*.dbf" "C:\Users\jcueval\Desktop\Pruebas_Batch\holiboli\")

Hola Andy, sigo craneando pero sigo con el problema, solo puedo lograr copiar todos los archivos con el .dbf, pero cuando quiero poner el filtro de fecha no logro entender como y con el código que me comentas, he probado variaciones como la de arriba pero me sigue dando error, con este código que te adjunto abajo si cumple todo menos lo de la fecha, que necesito que este dentro del mes actual. Por favor ayúdame.

xcopy "D:\TEMP\VT*.DBF" "C:\Users\jcueval\Desktop\Pruebas_Batch\HOLIBOLI\"  /e /c /y 

Disculpa la demora, estaré muy ocupado estas semanas venideras y responderé poco o lento.

Los script batch no son un lenguaje de alto nivel, es complicado combinar varias condiciones en una sola instrucción. Debido a mi falta de tiempo dudo que pueda ayudarte, te escribo esto desde el celular sin acceso a la PC, estaré fuera de casa un tiempo, pero te pudo dar un consejo:

Si abres el Command Prompt (cmd) puedes escribir el nombre de cualquier función seguido de "/?" sin las comillas, y te dará una lista y descripción de cada parámetro, así te puedes dar una idea de todo lo que hace y como lo hace.

Por ejemplo escribes: xcopy /?

o también: for /?

Y al presionar Enter te da una lección de todo lo que se puede hacer con ellos.

Si mal no recuerdo, xcopy tiene un parámetro para la fecha de modificación, no recuerdo como se escribe, es algo como OD u o-D o simplemente D en formato m-d-yy

De todas formas si pones xcopy /? en la ayuda te dirá exactamente como se escribe, así de memoria ppffff jajaja no es algo que use todos los días, sorry.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas