Título: ayuda con renombrado de archivo txt em batch Publicado por: eltioted en 29 Junio 2015, 22:10 pm Hola como estan todos? tengo un inconveniente, recién me inicio en esto y en el trabajo me solicitaron hacer algo asi, es un listado como el que te muestro con otros datos similares pero el esquema sería el mismo:
TRANSACCION 1 TRANSACCION 2 TRANSACCION 3 TRANSACCION 4 TRANSACCION 5 TRANSACCION 6 TRANSACCION 7 TOTALES DE LA TERMINAL 02602 : TRANSACCION 8 TRANSACCION 9 TRANSACCION 10 TRANSACCION 11 TRANSACCION 12 TRANSACCION 13 TRANSACCION 14 TOTALES DE LA TERMINAL 02603 : TRANSACCION 15 TRANSACCION 16 TRANSACCION 17 TRANSACCION 18 TRANSACCION 19 TRANSACCION 20 TRANSACCION 21 TOTALES DE LA TERMINAL 02606 : TRANSACCION 22 TRANSACCION 23 TRANSACCION 24 TRANSACCION 25 TRANSACCION 26 TRANSACCION 27 TRANSACCION 28 TOTALES DE LA TERMINAL 02620 : bueno lo que yo necesito es que me figure el listado de la siguiente manera luego de pasarlo por el .bat. TOTALES DE LA TERMINAL 02602 :TRANSACCION 1 TOTALES DE LA TERMINAL 02602 :TRANSACCION 2 TOTALES DE LA TERMINAL 02602 :TRANSACCION 3 TOTALES DE LA TERMINAL 02602 :TRANSACCION 4 TOTALES DE LA TERMINAL 02602 :TRANSACCION 5 TOTALES DE LA TERMINAL 02602 :TRANSACCION 6 TOTALES DE LA TERMINAL 02602 :TRANSACCION 7 TOTALES DE LA TERMINAL 02602 :TOTALES DE LA TERMINAL 02602 : TOTALES DE LA TERMINAL 02603 :TRANSACCION 8 TOTALES DE LA TERMINAL 02603 :TRANSACCION 9 TOTALES DE LA TERMINAL 02603 :TRANSACCION 10 TOTALES DE LA TERMINAL 02603 :TRANSACCION 11 TOTALES DE LA TERMINAL 02603 :TRANSACCION 12 TOTALES DE LA TERMINAL 02603 :TRANSACCION 13 TOTALES DE LA TERMINAL 02603 :TRANSACCION 14 TOTALES DE LA TERMINAL 02603 :TOTALES DE LA TERMINAL 02603 : TOTALES DE LA TERMINAL 02606 : TRANSACCION 15 TOTALES DE LA TERMINAL 02606 : TRANSACCION 16 TOTALES DE LA TERMINAL 02606 : TRANSACCION 17 TOTALES DE LA TERMINAL 02606 : TRANSACCION 18 TOTALES DE LA TERMINAL 02606 : TRANSACCION 19 TOTALES DE LA TERMINAL 02606 : TRANSACCION 20 TOTALES DE LA TERMINAL 02606 : TRANSACCION 21 TOTALES DE LA TERMINAL 02606 : TOTALES DE LA TERMINAL 02606 : TOTALES DE LA TERMINAL 02620 : TRANSACCION 22 TOTALES DE LA TERMINAL 02620 : TRANSACCION 23 TOTALES DE LA TERMINAL 02620 : TRANSACCION 24 TOTALES DE LA TERMINAL 02620 : TRANSACCION 25 TOTALES DE LA TERMINAL 02620 : TRANSACCION 26 TOTALES DE LA TERMINAL 02620 : TRANSACCION 27 TOTALES DE LA TERMINAL 02620 : TRANSACCION 28 TOTALES DE LA TERMINAL 02620 : TOTALES DE LA TERMINAL 02620 : La manera que encuentro es la siguiente, primero paso el archivo MADRE (sin formato) le hago un find de la palabra “TOTALES DE LA TERMINAL” y el resultado me lo guardo en un FINTERMINAL.txt. Una vez hecho eso hago lo siguiente: Recorro con un FOR todo el archivo madre comparando el registro con una variable (esta variable la voy a sacar del archivo FINTERMINAL.txt), si la variable es igual al registro del archivo MADRE, hago que cambie de variable del archivo FINTERMINAL.txt Este es el código que hice, pero queda en loop, algo estoy haciendo mal, si pueden ayudarme sería genial. Código Tengo que leer el archivo madre, comparar el registro del archivo madre con el registro que lei del archivo de finterminal, si es distinto, en un nuevo archivo agregar el registro de finterminal + el registro del archivo madre, si el registro del madre con el de terminal fuesen igual, debería de seguir leyendo el archivo findeterminal para pasar a la siguiente terminal, y seguir leyendo el archivo madre desde la posicion donde estaban. desde ya muchas gracias a todos! espero me puedan ayudar! saludos. Título: Re: ayuda con renombrado de archivo txt em batch Publicado por: Eleкtro en 30 Junio 2015, 00:19 am Antes de nada:
Está prohibido el doble post. En Batch, al ser un lenguaje tan limitado, se convierte en algo más complejo (o mejor dicho, TEDIOSO) que lo que estás haciendo. Te he escrito el siguiente ejemplo funcional. Cabe mencionar que el procesado del texto es lento (muy lento) ya que el texto se itera dos veces, la primera iteración es para obtener las lineas "TOTALES DE LA TERMINAL XXXXX :", y en la segunda iteración, para formatear la salida del texto, cada linea debe pasar por la entrada de la aplicación "Find.exe" (dos veces) para acondicionar el formato, entonces, la constante ejecución de Find.exe lo vuelve lento; Con pequeños archivos no pasa nada, pero si son archivos de miles de lineas entonces notarás que puede llegar a tardar minuto(s) (más si activases el echo en esa iteración, en lugar de redirigir la salida al archivo). Es algo irremediable. En cualquier otro lenguaje esta tarea sería algo mucho más eficiente. Código
Resultado de ejecución: Código: TOTALES DE LA TERMINAL 02602 :TRANSACCION 1 Saludos! |