Gracias por el manual que tienen de Batch, a cambio del valioso instructivo que proporcionan, dejo aquí lo que cree.
A grandes rasgos esto realiza una copia de seguridad de archivos que están dentro de una carpeta y que comienzan con un nombre en particular, la fecha de los archivos debe venir en el nombre del archivo que se revisan.
Se crearan dos carpetas donde se colocarán los archivos, Carga y Respaldos. La carpeta Carga servirá para que otro proceso tome solo ese archivo para su procesamiento.
Cualquier duda les responderé.
Saludos.
Código
rem echo ################ rem echo # Creado Por # rem echo # Alexis Reyes # rem echo # s00a-areyes # rem echo ################ rem Archivos a revisar: rem archivo_20190401.txt rem archivo_20190403.txt rem archivo_20190408.txt rem archivo_20190420.txt rem Despues de ejecutar el batch se crea la siguiente estructura de archivos y carpetas: rem CARGA rem - NOMBRE_NUEVO.TXT rem RESPALDOS rem - 01-04-2019 rem - NOMBRE_NUEVO.TXT rem - 03-04-2019 rem - NOMBRE_NUEVO.TXT rem - 08-04-2019 rem - NOMBRE_NUEVO.TXT rem - 20-04-2019 rem - NOMBRE_NUEVO.TXT rem Se debe considerar los siguientes parametros: rem carpetaCarga: Es la ruta donde se colocará el archivo mas actual, que luego otro proceso tomará. rem carpetaRespaldo: Es la carpeta donde se crearan las carpetas por día. rem nombreArchivo: Es el nombre que tendrán todos los archivos que se revisarán luego del proceso de normalizacion de nombres. rem subCadenaInicio: Es la cadena que se revisará en los nombres de archivos que se quieran revisar. Ej: Archivo_20190401.txt -> Archivo_ rem vNumero: Es el numero de fecha extraida del nombre que son buscados Ej: Archivo_20190401.txt -> 20190401 @echo off rem echo %dirActual% SET subCadenaInicio=Archivo_ rem Establecer el nombre de la carpeta en donde estará la última carga SET carpetaCarga=CARGA rem Establecer el nombre de la carpeta en donde estarán los respaldos de los archivos SET carpetaRespaldo=RESPALDOS rem Establecer el nombre de salida que tendrán todos los archivos SET nombreArchivo=NOMBRE_NUEVO.TXT rem Establecer variable del día más actual SET vDiaMasActual=0 rem Etiqueta en donde se iniciará el programa GOTO:INICIO rem Funcion que verifica que si una carpeta existe, sino la crea. rem Recibe 2 parametros: La carpeta que se quiere saber si existe y el nombre de la etiqueta de dónde irá el código luego de terminar la funcion. :ExistenciaCarpeta rem echo %1 exists rem echo %1 created ) rem Funcion que verifica que si una archivo existe, sino lo crea vacio. Luego realiza una copia. rem Recibe 3 parametros: El archivo, el archivo que se quiere copiar y dónde irá el código luego de terminar la funcion. :ExistenciaArchivo ) rem Inicio del programa :INICIO :RESPALDOS :CARGA rem Inicia el ciclo para revisar los archivos que se quieren revisar goto:ciclo :cont rem echo %1 rem ECHO Nombre Fecha: %vCarpetaNueva% rem ECHO %vNumero% %vDiaMasActual% :CarpetaNueva rem Se verifica que la fecha del archivo que se está revisando es mayor al dia que se ha guardado como más actual, si es así se reemplaza el valor. ) :ArchivoLinea1 :ArchivoLinea2 rem ECHO DIA MAS ACTUAL: %vDiaMasActual% rem Se revisan todos los archivos que se encuentran dentro de la carpeta que se ejecuta el batch y que comienzan con la subCadenaInicio :ciclo )