Acumulación de archivos [BATCH]

Iniciado por CaronteGold, 23 Diciembre 2009, 14:09 PM

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

CaronteGold



   Buenas,


   Estoy haciendo un programa que vaya acumulando unos ciertos datos, y en un punto, cuando el que ejecute el programa quiera, pueda ver el total de ellos. La cosa es que, el programa quiero que sirva para ir guardando datos de grabación de video, el user pone, he grabado 1 cinta, o 0.5 cinta, y entonces yo doy variables 1c=60, 0.5=30, pero luego quiero que eso se vaya guardando, yo he pensado guardarlo en un .bat aparte y así me quedó:

   @echo off

set /p cantidad=Cintas-Minutos:
if %cantidad%==0.5c ( goto cant05c
:cant05c
echo 30 minutos

echo set /a total+=30>>datos.bat

pause>nul )

exit



   Y luego quedaría en el otro programa que el total es 30, pero mi problema es, como puedo poner para que el resultado se muestre, ya que si cada vez que se introducen datos pongo el echo echo loquesea>>datos.bat,  cada vez que introduces un total estaría saliendo luego  , echo 30, echo 90.

   Bueno, no sé si se me entendió muy bien.

   Saludos.



---saster---

no se si te entendido :P

si no quieres que te salgan los datos seguidos pon una unica redireccion ">". Así solo te saldrá el resultado final

saludos.

CaronteGold

#2

 No te he entendido muy bien, la cosa es que en el nuevo .bat quedaría así:


 set /a total+=30
 set /a total+=30

y si pongo un echo y añado más y luego un echo quedaría así:


set /a total+=30
set /a total+=30
echo %total%
set /a total+=30
echo %total%

  Y entonces imprimiría dos totales, yo quiero que de la posibilidad de verse el "Total" , pero una vez solo, y la última, por que entonces quedaría :  60 y luego 90, y en este caso, solo quiero que muestre el final, el 90.

  Saludos.



  EDITO: he probado lo que me dices, pero eso sustituye todo, y claro muestra el último, pero yo me refiero a la última suma total.

leogtz

No te he entendido nada, por favor, vuelvelo a plantear con más calma.
Citar
yo doy variables 1c=60, 0.5=30

Mal, es un mal hábito crear variables con nombres que tengan poco o nada que ver con lo que harán.
Código (perl) [Seleccionar]

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

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

Warkanlock

Yo creo que lo que quiere hacer nuestro amigo es estar recopilando datos una cierta cantidad de minutos pero cuando llege a 90 esto termine de recopilar datos y se cierra es eso lo que quieres hacer?

CaronteGold

#5

Cita de: Warkanlock en 23 Diciembre 2009, 22:58 PM
Yo creo que lo que quiere hacer nuestro amigo es estar recopilando datos una cierta cantidad de minutos pero cuando llege a 90 esto termine de recopilar datos y se cierra es eso lo que quieres hacer?

  No, no es eso lo que quería hacer, me he explicado mal  :xD


Cita de: Leo Gutierrez. en 23 Diciembre 2009, 20:25 PM
No te he entendido nada, por favor, vuelvelo a plantear con más calma.
Citar
yo doy variables 1c=60, 0.5=30

Mal, es un mal hábito crear variables con nombres que tengan poco o nada que ver con lo que harán.

 
  Bueno , 1c quiere decir 1cinta, en este caso 1 cinta de video que son 60 minutos, una hora.

   Voy a explicar mejor:


 Lo que quiero hacer es un programa, que tu vayas insertando, unos datos, como esto:

1,0.5c,2c,3c   ----> Es decir, una cinta, media cinta, 2 cintas , 3 cintas. De manera que pongo la variable indicando que 1c son 60, 0.5c son 30, y así sucesivamente.

 Esto lo hago con variables, y bien... quiero que estos datos se vayan acumulando, la única forma que ví es ir poniendolos en un .bat, de esta forma:

set /a total+=loquesea

  Y así va sumando ejemplo: 30..+60...+120.... , y cuando se quiera ver pues ese es el problema, tendría que poner un "echo %total%", para que me lo muestre, pero la cosa es que si voy pasando datos quedaría:


  set /a total+=30
  set /a total+=90
  set /a total+=120
  set /a total+=60

 Y si ahí pongo un "echo", mostraría la suma de , 30+90+120+60, pero si vuelvo a dar más datos, y vuelvo a poner un echo, mostraría el echo anterior y el siguiente que ponga, y yo quiero que solo muestre uno, el total, entonces tendría que actuar borrando el "echo %total%" y que se sustituya, por otro abajo del todo, de manera que al imprimir la variable " total ", siempre quede al final.


 Vuelvo a explicar lo anterior con códigos...

  Si voy acumulando datos queda :


  set /a total+=30
  set /a total+=90
  set /a total+=120
  set /a total+=60


   Y si quiero ver la variable queda:


  set /a total+=30
  set /a total+=90
  set /a total+=120
  set /a total+=60
  echo %total%


   Pero si vuelvo a dar mas datos queda:

  set /a total+=30
  set /a total+=90
  set /a total+=120
  set /a total+=60
  echo %total%
  set /a total+=60


  Y si a eso le añado otro " echo %total%,  si imprimen dos, y solo quiero ver la última y final.


 Espero que ahora se haya entendido,

 Saludos y gracias.




 

CaronteGold

#6

  Borren este post,

leogtz

Código (perl) [Seleccionar]

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

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

CaronteGold



 
   Me equivoqué, me refería a los mensajes, es que al editar puse 2 de más.  :xD

CaronteGold


   He pensado que podría hacerse, mandando leer o procesar solo las tres últimas líneas del programa, es decir la variable, el " echo %total% y pause.

   Podría hacerse eso ¿?.


  Saludos.