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

 

 


Tema destacado: Guía rápida para descarga de herramientas gratuitas de seguridad y desinfección


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Copiar 2 archivos más recientes de una carpeta a otra con comando .bat
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Copiar 2 archivos más recientes de una carpeta a otra con comando .bat  (Leído 5,954 veces)
Josejanseco

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Copiar 2 archivos más recientes de una carpeta a otra con comando .bat
« en: 27 Junio 2019, 10:51 am »

Tengo una carpeta de origen (D: \ Board_Interfaces \ Historico), que recibe archivos ".csv" diarios de un servidor, los nombres de los archivos son básicamente dos:

-KON.DAILY_D_ES_20190331_20190412
-KON.DAILY_P_ES_20190331_20190412

Como puede ver, el nombre del archivo cambiará según la fecha, pero solo me interesa la fecha de modificación. Además, esta carpeta de origen tiene varios archivos con nombres basados en los ejemplos anteriores. Me gustaría tomar los últimos "KON.DAILY_D" y "KON.DAILY_P", y copiarlos en una carpeta de destino (D: \ Board_Interfaces \ Interfaces \ IN_KON). Gracias por la ayuda

De momento tengo este comando pero no me funciona

@Echo off
setlocal enableDelayedExpansion
set "source=C:\Users\guillermo.abascal\Desktop\IN_KON"
set "target=C:\Users\guillermo.abascal\Documents\Prueba"

PushD "%source%"
set "counter=0"
for /f "tokens=* delims=" %%A in ('dir "*.csv" /b /o:-d /t:w') do (
   set /a counter+=1
   Set Copy[!counter!]=copy "%%~fA" "%target%\"
   if !counter! equ 2 goto :break
)
:break
Del /Q "%target%\*"
For /L %%C in (1,1,%counter%) Do !Copy[%%C]!
PopD


En línea

@XSStringManolo
Hacker/Programador
Colaborador
***
Desconectado Desconectado

Mensajes: 2.399


Turn off the red ligth


Ver Perfil WWW
Re: Copiar 2 archivos más recientes de una carpeta a otra con comando .bat
« Respuesta #1 en: 27 Junio 2019, 11:47 am »

No entiendo exactamente que es lo que quieres hacer.
Tampoco cual es la utilidad.

Quieres hacer un copia y pega de los 2 ultimos archivos?

No entiendo quien hace estos embrollos de códigos con tanta flag y tanto parámetro para algo sencillo.
Solo tienes que usar  %%~t? Para sacar la fecha de modificación del archivo. %%~n para el nombre.
Recorres el directorio en un for.
Guardas el nombre y la fecha de cada archivo en un array o linked list, o algo así.
Comparas las fechas en los arrays para ordenarlos.
Obtienes el nombre de los 2 primeros arrays.
Copias los 2 primeros ficheros del array en la carpeta destino.

Si quieres metes todo en una función y le pones un timer para que revise por archivos cada cierto tiempo por ejemplo timeout 3600 hará que cada hora se compruebe la carpeta. Para que se ejecute al arrancar pegas un acceso directo al bat en la carpeta startup y ahí se quedara el proceso abierto  comprobando cada hora.


En línea

Mi perfil de patrocinadores de GitHub está activo! Puedes patrocinarme para apoyar mi trabajo de código abierto 💖

Josejanseco

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: Copiar 2 archivos más recientes de una carpeta a otra con comando .bat
« Respuesta #2 en: 27 Junio 2019, 13:28 pm »

Hola, lo que sucede es que una interfaz realiza descargas diarias a una carpeta, con los nombres:
-KON.DAILY_D_ES_AAAAMMDD_AAAAMMDD
-KON.DAILY_P_ES_AAAAMMDD_AAAAMMDD

Dicha carpeta, ya contiene archivos similares de días anteriores, por lo que necesito copiar el más reciente.

Los dos archivos más recientes los tengo que copiar (diariamente) a una carpeta, desde la cual. una aplicación de BI realiza la carga.

La utilidad es ahorrar tiempo al no tener que realizar este proceso manualmente.

Lamentablemente, no poseo conocimientos de informática por lo que buscar en foros ha sido mi única opción. El comando que copié en el post anterior, debería en un principio realizar la función que necesito. Desconozco si hay una manera más sencilla de hacerlo, pero estaría inmensamente agradecido si pudieses ayudarme con eso. Como te comentaba, esta es una área ajena a mis estudios, y aunque ya te tomaste la molestia de explicármelo paso a paso, no tengo ni idea de como plasmarlo en un código.

No se si tengas tiempo de escribirlo solo para que yo lo pueda pegar, de igual manera gracias por los consejos
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines