[BATCH]Mostrar Suma de las lineas de un archivo de texto.

Iniciado por FranciskoAsdf, 28 Junio 2011, 18:08 PM

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

FranciskoAsdf

Hola, saludos :D!

En esta ocacion vengo a preguntar como puedo hacer algo.

Tengo un script (de hecho es uno de los de Leo) para contar las lineas de un archivo de texto. Que porsupuesto funciona perfecto. Pero lo que quiero hacer es que me vaya motrando la sumatoria de las lineas de texto.

El script es este:

Código (dos) [Seleccionar]

@echo off
set /a contador=0
for /f "" %%x in (CLLDB.CSV) do (
call :contador %%x

)
echo Lineas : %contador%
pause>nul
goto:eof
:contador
set /a contador+=1
goto:eof


El problema es que solo muestra la suma final. Y yo quiero que se vaya mostrando la suma, onda 1 2 3 4 5 hasta 10041 o los que tenga el archivo xD.

Probé con colocar:

Código (dos) [Seleccionar]

ECHO %contador%

Código (dos) [Seleccionar]

ECHO %%x


El primero dentro y fuera del FOR, y el segundo obviamente solo dentro del FOR.

Pero o me muestran solo "0" o el texto de las lineas.


Si alguien fuera tan amable de ayudarme porfavor.

De ante mano muchas gracias, Saludos.
Asdf debería ser algún tipo de función.

SuperDraco

#1
hola, debías ponerlo dentro del Call



Código (dos) [Seleccionar]
@echo off
set /a contador=0
for /f "" %%x in (CLLDB.CSV) do (
call :contador %%x

)
echo Lineas : %contador%
pause>nul
goto:eof
:contador
set /a contador+=1
echo %contador%
goto:eof





Resultado en la pantalla:


1
2
3
4
5
Lineas : 5



Saludos!
No he vuelto, solo estoy de paso.

FranciskoAsdf

:OOO, soy un inepto xd, no se me ocurrio :S, muchas gracias por la ayuda Pitoloko


Saludos y gracias de nuevo ;D
Asdf debería ser algún tipo de función.

leogtz

¿No te funciona esto?

Código (dos) [Seleccionar]
@echo off
setlocal enabledelayedexpansion
set /a contador=0
for /f "" %%x in (CLLDB.CSV) do (
set /a contador+=1
echo !contador!
)
echo Lineas : %contador%
pause>nul
goto:eof


Aviso que estoy en Linux y no puedo probarlo.
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

FranciskoAsdf

Por alguna razon que desconozco XD, funciona de igual forma, pero mucho mas rapido.

Gracias Leo y Pitoloko, una vez mas me han salvado :D
Asdf debería ser algún tipo de función.

SuperDraco

A mi también se me ocurrió lo de expandir, pero tambien por una razón que desconozco, no me funcionó :/  y lo hice igual que Leo, que raro xD

saludos
No he vuelto, solo estoy de paso.

FranciskoAsdf

xD, pero como te digo, funciona, pero mas rapido. xD
Asdf debería ser algún tipo de función.

leogtz

Creo que esto también funcionaría
Código (dos) [Seleccionar]
@echo off
for /f "tokens=*" %%_ in ('cat CLLDB.CSV ^| find /v /c ""') do set n="%%_"
for /l %%_ in (1, 1, %n%) do echo %%_
echo Lineas : %n%
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

WaAYa HaCK

Cita de: Leo Gutiérrez. en 29 Junio 2011, 20:42 PM
Creo que esto también funcionaría
Código (dos) [Seleccionar]
@echo off
for /f "tokens=*" %%_ in ('cat CLLDB.CSV ^| find /v /c ""') do set n="%%_"
for /l %%_ in (1, 1, %n%) do echo %%_
echo Lineas : %n%


for /f "tokens=*" %%_ in ('cat CLLDB.CSV ^| find /v /c ""') do set n="%%_"
Comando "cat" en Windows? Cuál?
Ahora en serio: sé que cat es de UNIX, pero... los de Windows también lo tienen? No es coña, ando perdido...  :P . Te colaste tú o me colé yo, como es usual   :huh: ? Disculpa
La cacatúa yoyó es nueva en el zoo!

SuperDraco

#9
Existe, pero se le habrá colado xD

http://unxutils.sourceforge.net/

EDITO: Solo funciona el link del mirror  :rolleyes:
No he vuelto, solo estoy de paso.