elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Barra de progreso [Batch]
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Barra de progreso [Batch]  (Leído 16,960 veces)
Nilrac

Desconectado Desconectado

Mensajes: 109



Ver Perfil
Barra de progreso [Batch]
« en: 27 Julio 2010, 03:02 am »

Hola !

Encontre este code que me parece excelente para una barra de progreso en batch.

Código:
@echo off

SetLocal EnableDelayedExpansion EnableExtensions
Echo.
Echo. Loading...
Echo.
Set "bar="
Set "percent=0"
Set "count=0"
For /L %%I In (1,1,20) Do (Set "bar=!bar!±")
:Loop
Set /P "= %bar:~0,20% %percent%%%"<Nul
REM en esta linea seteo la variable asdf = al primero numero del comando random (cualquier numero del 1 al 9)
Set "asdf=%Random:~0,1%"
If %asdf% GEQ 8 (
REM acá si la variable asdf es mayor o igual a 8 le resto 4 para que el ping no pase de 5 y así no hace tan larga la carga
Set /A "asdf=asdf-4"
)
REM y acá solo cambio los ping 5 por el lo que contenga la variable asdf
Ping -n %asdf:~0,1% -w %asdf:~0,1% LocalHost>nul
For /L %%I In (1,1,26) Do Set /p "="<Nul
Set "bar=Û%bar%"
Set /a "count+=1"
Set /a "percent+=5"
If %count% LEQ 20 Goto:Loop
Echo.
Echo.
Echo. Done.
Pause>Nul 2>&1
Exit

Lo unico es que no entiendo, es como colocar mi codigo y que acabe al par de la barra de progreso

Gracias


En línea

FerJGS

Desconectado Desconectado

Mensajes: 75


Ver Perfil
Re: Barra de progreso [Batch]
« Respuesta #1 en: 27 Julio 2010, 15:09 pm »

Es fácil, simplemente tienes que poner la parte del código que quieres mostrar antes de cada porcentaje antes del ping.


En línea

Nilrac

Desconectado Desconectado

Mensajes: 109



Ver Perfil
Re: Barra de progreso [Batch]
« Respuesta #2 en: 27 Julio 2010, 17:33 pm »

Pues como lo dices no me funciona  :o, Al principio marca la barra y el 0% pero no avanza , mas sin embargo, el codigo si funciona
En línea

FranciskoAsdf

Desconectado Desconectado

Mensajes: 231


Ni bueno, ni malo. Solo nada.


Ver Perfil WWW
Re: Barra de progreso [Batch]
« Respuesta #3 en: 27 Julio 2010, 18:19 pm »

Te Explico un poco el uso de la barra de carga:

Por Ejemplo con un code como el siguiente funcionaria:

Código
  1. @echo off
  2. SetLocal EnableDelayedExpansion EnableExtensions
  3. Echo. Hola, cargando.-
  4. Call :BarraDeCarga
  5. Echo.Saliendo
  6.  
  7.  
  8. :BarraDeCarga
  9. Echo. Loading...
  10. Set "bar="
  11. Set "percent=0"
  12. Set "count=0"
  13. For /L %%I In (1,1,20) Do (Set "bar=!bar!±")
  14. :Loop
  15. Set /P "= %bar:~0,20% %percent%%%"<Nul
  16. REM en esta linea seteo la variable asdf = al primero numero del comando random (cualquier numero del 1 al 9)
  17. Set "asdf=%Random:~0,1%"
  18. If %asdf% GEQ 8 (
  19. REM acá si la variable asdf es mayor o igual a 8 le resto 4 para que el ping no pase de 5 y así no hace tan larga la carga
  20. Set /A "asdf=asdf-4"
  21. )
  22. REM y acá solo cambio los ping 5 por el lo que contenga la variable asdf
  23. Ping -n %asdf:~0,1% -w %asdf:~0,1% LocalHost>nul
  24. For /L %%I In (1,1,26) Do Set /p "="<Nul
  25. Set "bar=Û%bar%"
  26. Set /a "count+=1"
  27. Set /a "percent+=5"
  28. If %count% LEQ 20 Goto:Loop
  29. Goto :Eof
  30.  
  31.  

Ahora:

El texto "SetLocal EnableDelayedExpansion EnableExtensions", debes colocarlo al principio de TU codigo, despues de @Echo Off.-

Le Colocas una etiqueta a la funcion (la barra de carga) o puedes dejarlo como esta en el ejemplo (supongo que sabes lo que es una etiqueta xD).-

La etiqueta y todo lo que esta debajo de la etiqueta :BarraDeCarga hasta Goto:Eof colocalo al final de tu codigo para que no te moleste.-

Despues la puedes ir llamando cada vez que quieras por ejemplo:

Código
  1. @echo off
  2. SetLocal EnableDelayedExpansion EnableExtensions
  3. Echo. Set /P "nombre=Escribe Tu nombre : "
  4. Echo.Analizando Nombre espera....
  5. Call :BarraDeCarga
  6. Tu Nombre Es %nombre%.-
  7. Echo. Set /P "apellido=Escribe Tu nombre : "
  8. Echo.Analizando Apellido espera....
  9. Call :BarraDeCarga
  10.  
  11.  
  12. REM Aca va el codigo de la barra de carga...
  13. :BarraDeCarga
  14. Echo. Loading...
  15. Set "bar="
  16. Set "percent=0"
  17. Set "count=0"
  18. For /L %%I In (1,1,20) Do (Set "bar=!bar!±")
  19. :Loop
  20. Set /P "= %bar:~0,20% %percent%%%"<Nul
  21. REM en esta linea seteo la variable asdf = al primero numero del comando random (cualquier numero del 1 al 9)
  22. Set "asdf=%Random:~0,1%"
  23. If %asdf% GEQ 8 (
  24. REM acá si la variable asdf es mayor o igual a 8 le resto 4 para que el ping no pase de 5 y así no hace tan larga la carga
  25. Set /A "asdf=asdf-4"
  26. )
  27. REM y acá solo cambio los ping 5 por el lo que contenga la variable asdf
  28. Ping -n %asdf:~0,1% -w %asdf:~0,1% LocalHost>nul
  29. For /L %%I In (1,1,26) Do Set /p "="<Nul
  30. Set "bar=Û%bar%"
  31. Set /a "count+=1"
  32. Set /a "percent+=5"
  33. If %count% LEQ 20 Goto:Loop
  34. Echo. Done.
  35. Goto :Eof
  36.  

Y así, se entiende verdad xDDDD?!, no es necesario que coloques todo el codigo cada vez que lo quieras usar, solo basta con llamarlo cada vez que lo necesites =).-


Bueno espero que sí, cualquier duda consultas :D!!!
« Última modificación: 27 Julio 2010, 18:23 pm por Panxin.boo » En línea

Asdf debería ser algún tipo de función.
Nilrac

Desconectado Desconectado

Mensajes: 109



Ver Perfil
Re: Barra de progreso [Batch]
« Respuesta #4 en: 27 Julio 2010, 18:34 pm »

Claro como el agua amigo.

Creí que se usaba de forma global en todo el code.

Gracias.
En línea

Operators

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: Barra de progreso [Batch]
« Respuesta #5 en: 11 Enero 2016, 02:13 am »


Muy Buenas Noches

Tengo una duda del código mostrado en la siguiente linea:

For /L %%I In (1,1,26) Do Set /p "="<Nul

Luego del Igual ( = )  y antes de la segunda comillas doble ( " ), existe un signo que desconozco, este se ve mejor cuando se copia esa linea en bloc de notas, si me podrían explicar su función y como sacarlo por favor,

Muchas Gracias de Antemano,

Nota: El resto del código esta excelente, un gran ejemplo que al menos a mi no se me hubiese ocurrido, gracias por el aporte.
En línea

_TTFH_3500

Desconectado Desconectado

Mensajes: 123



Ver Perfil
Re: Barra de progreso [Batch]
« Respuesta #6 en: 12 Enero 2016, 14:06 pm »

Citar
Tengo una duda del código mostrado en la siguiente linea:

For /L %%I In (1,1,26) Do Set /p "="<Nul

Luego del Igual ( = )  y antes de la segunda comillas doble ( " ), existe un signo que desconozco, este se ve mejor cuando se copia esa linea en bloc de notas, si me podrían explicar su función y como sacarlo por favor


¿Te refieres al circulo blanco dentro de un rectángulo vertical negro?, ese es el carácter de retroceso:
Binario      Decimal  Hex  Abreviatura  Repr  AT        Nombre
0000 1000     8       08       BS           ␈   ^H   Retroceso/Backspace

Es decir la tecla '<--' que esta encima de 'ENTER', en este caso sirve para que se muestre en solo una linea la barra de carga, sino se vería así:

 Loading...

▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ 0%█▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ 5%██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ 10%███▒▒▒▒▒▒▒
▒▒▒▒▒▒▒▒▒▒ 15%████▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ 20%

En lugar de así:

 Loading...

██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ 10%


Edito: puede que me equivoque porque en teoría al presionar Alt+8 ◘ debería aparecer el mismo carácter, pero en Notepad++ aparece con el icono de |BS|, ahora bien la funcionalidad si es esa.
« Última modificación: 12 Enero 2016, 14:12 pm por _TTFH_3500 » En línea

Operators

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: Barra de progreso [Batch]
« Respuesta #7 en: 13 Enero 2016, 02:09 am »


Hola,

Muchisimas gracias por responder, ahora me queda mas claro, no me salio el símbolo en bloc de notas pero si en Notepad++, lo único que ahora me quedo con la duda si habrá un lugar o manual donde expliquen estos símbolos porque no los conocía, y en los lugares donde he leído ( inclusive en el foro ) no me había topado con ellos, o lo mejor no he buscado muy bien en el foro.

Te agradezco nuevamente por compartir de tus conocimientos y apoyo, he aprendido varias cosas que he aplicado en mi trabajo y me ha ido bien.  :D
En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.858



Ver Perfil
Re: Barra de progreso [Batch]
« Respuesta #8 en: 13 Enero 2016, 09:13 am »

1. Está prohibido revivir posts antiguos, puedes publicar una nuevo post para formular tus preguntas si lo deseas y poner enlaces a este u otros hilos para referencias su contenido...

2. Respecto a la primera pregunta que hiciste, es el caracter del backspace (BS):

3. Respecto a la última pregunta, aquí puedes encontrar los caracteres de bloques unicode:

Tema cerrado.

Saludos!
En línea



Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
barra de progreso
.NET (C#, VB.NET, ASP)
DaNuK 2 4,461 Último mensaje 10 Marzo 2010, 02:05 am
por DaNuK
[ Batch ] Barra de progreso en batch... ¿Como?
Scripting
SuperDraco 5 12,427 Último mensaje 30 Diciembre 2017, 14:26 pm
por Rubenprogrammer
VBS barra de progreso
Programación Visual Basic
quico5 0 3,383 Último mensaje 14 Agosto 2012, 20:41 pm
por quico5
barra de progreso en c++
Programación C/C++
d91 4 5,241 Último mensaje 27 Abril 2014, 21:25 pm
por amchacon
Como implementar barra de progreso en batch
Programación General
Baphomet2204 3 4,463 Último mensaje 29 Julio 2019, 17:48 pm
por Baphomet2204
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines