Ayuda con batch y txt

Iniciado por eltioted, 17 Febrero 2016, 23:28 PM

0 Miembros y 1 Visitante están viendo este tema.

eltioted

Tengo un archivo txt que dentro tiene títulos y más abajo datos que referencia a esos títulos, por ejemplo

Cajero 2075
Recuento de efectivo
500
Recibo de balance
700
Reposición de efectivo
900
Cajero3087
Reposicion de efectivo
800
Cajero 6789
Recibo de balance
700
Reposición de efectivo
600

Lo que necesitó hacer es recorrer ese listado y que adelante de cada linea me diga si es recibo de balanceo, reposición de efectivo o recuento de efectivo.

Se me ocurre lo siguiente pero se me complica para codificarlo.

Cargo en una variable alguna de las 3 condiciones (ejemplo reposicion de efectivo) y recorro el archivo preguntando si en esa línea hay alguna de las 3 condiciones por ejemplo si llegase a haber reposición de efectivo, al comenzar cada línea voy poniendo reposición de efectivo, hasta que por ejemplo encuentro como contenido de la línea recuento de efectivo, entonces cambio el contenido de la variable a recuento de efectivo.

Siguiendo el ejemplo el archivo de salida debería ser así, cargando como valor inicial reposición de efectivo

Reposicion de efectivo:Cajero 2075
Reposicion de efectivo:Recuento de efectivo
Recuento de efectivo:500
Recuento de efectivo:Recibo de balance
Recibo de balance:700
Recibo de balance:Reposición de efectivo
Reposición de efectivo:900
Reposición de efectivo:Cajero3087
Reposicion de efectivo:Reposición de efectivo
Reposición de efectivo:800
Reposición de efectivo:Cajero 6789
Reposición de efectivo:Recibo de balance
Reposición de efectivo:700
Reposición de efectivo:Reposición de efectivo
Reposición de efectivo:600

Se entiende el archivo de output?

Con esto alcanza, o necesitas más información? Necesitaría alguna información como para orientarme

Muchas gracias, esperó tus comentarios.

Saluda atte.

Eleкtro

Creo que con este código tienes por donde orientarte...:

Código (dos) [Seleccionar]
@Echo OFF & SetLocal EnableDelayedExpansion & Title by Elektro

Set /A "flag=0"

For /F "UseBackQ Tokens=* Delims=" %%a In (
"C:\Users\Administrador\Desktop\1.txt"
) Do (
(Echo "%%a" | Find.exe /I "Reposición")1>Nul && (Set /A "flag=0")
(Echo "%%a" | Find.exe /I "Recuento"  )1>Nul && (Set /A "flag=1")
(Echo "%%a" | Find.exe /I "Recibo"    )1>Nul && (Set /A "flag=2")

If !flag! EQU 0 (Echo Reposición de efectivo: %%a)
If !flag! EQU 1 (Echo Recuento de efectivo  : %%a)
If !flag! EQU 2 (Echo Recibo de balance     : %%a)

)

Pause&Exit /B 0


Resultado de ejecución:
CitarReposición de efectivo: Cajero 2075
Recuento de efectivo  : Recuento de efectivo
Recuento de efectivo  : 500
Recibo de balance     : Recibo de balance
Recibo de balance     : 700
Reposición de efectivo: Reposición de efectivo
Reposición de efectivo: 900
Reposición de efectivo: Cajero3087
Reposición de efectivo: Reposicion de efectivo
Reposición de efectivo: 800
Reposición de efectivo: Cajero 6789
Recibo de balance     : Recibo de balance
Recibo de balance     : 700
Reposición de efectivo: Reposición de efectivo
Reposición de efectivo: 600
Presione una tecla para continuar . . .

Saludos