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

á

 


Tema destacado: Rompecabezas de Bitcoin, Medio millˇn USD en premios


+  Foro de elhacker.net
|-+  Programaciˇn
| |-+  Scripting
| | |-+  A˝adir codigo de Barra de Progreso a un BAT
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: A˝adir codigo de Barra de Progreso a un BAT  (Leído 6,006 veces)
BDJMarcelo

Desconectado Desconectado

Mensajes: 17


Ver Perfil
A˝adir codigo de Barra de Progreso a un BAT
« en: 26 Junio 2017, 04:35 am »

HOLA A TODOS....

Perdˇn cualquier error pero soy nuevo en el foro y estoy intentando conseguir una peque˝a ayuda....

Tengo el siguiente cˇdigo que no es muy complicado y que realiza simplemente la instalaciˇn de los siguientes programas de 1 en 1.

CODIGO DE INSTALACIËN
Código
  1. @ECHO OFF
  2. CLS
  3. MODE CON cols=40 lines=6
  4. COLOR 1F
  5. ECHO  [*******************************]
  6. ECHO     I N D I S P E N S A B L E S
  7. ECHO  [*******************************]
  8. ECHO                              32bit  
  9. "NET_Framework_3.5.exe"
  10. "NET_Framework_4.5.1.exe"
  11. "NET_Framework_4.5.2.exe"
  12. "NET_Framework_4.6.1.exe"
  13. "Java_32.exe" /s
  14. "VBCRedist_AIO_x86_x64.exe"
  15. "Silverlight32.exe" /q
  16. "AdbeRdr.exe"
  17. "Objectdock.exe"
  18. "Obj32bit.exe"
  19. "DirecX2010.exe"
  20. "FirefoxMarcadores.exe"
  21. "Firefox32bit.exe" -ms
  22. "Chrome32.exe"
  23.  
  24.  


BARRA DE PROGRESO

Código:
echo off
color f
mode 53,5
set counter=0
set counterb=000
set core=██████████████████████████████████████████████████
set "valuecore=                                                  "
setLocal EnableDelayedExpansion
:start
cls
echo.▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
echo.█%valuecore:~0,50%█
echo.█▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄█
if %counter% GEQ 50 set msg=complete& set counterb=10000& goto exit
echo. %counterb:~0,-2%%%
set /a counter=counter+1
set /a counterb=counterb+200
set "valuecore=!core:~0,%counter%!                                                  "
set delay=0
:delay
if %delay%==200 goto start
set /a delay=delay+1
goto delay
:exit
echo. %counterb:~0,-2%%% %msg%
ENDLOCAL
pause >NUL

Tengo el siguiente cˇdigo de "Barra de progreso" que quiero incorporar al anterior cˇdigo. Esto quiere decir que que en lugar del siguiente texto:

Código
  1. ECHO  [*******************************]
  2. ECHO     I N D I S P E N S A B L E S
  3. ECHO  [*******************************]
  4. ECHO                              32bit  
  5.  


Quiero que aparezca la siguiente "Barra de progreso".



Pero obviamente quiero que esta barra se cargue de acuerdo al progreso de la instalaciˇn de los programas.

En resumen quiero unir los dos cˇdigos pero no se cˇmo poder hacerlo ya que soy novato en el asunto y les pido de favor me colaboren.

De antemano muchas gracias...



« Última modificación: 26 Junio 2017, 05:42 am por Eleкtro » En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.699



Ver Perfil
Re: A˝adir codigo de Barra de Progreso a un BAT
« Respuesta #1 en: 26 Junio 2017, 06:15 am »

Esa barra de progreso es demostrativa mßs que rehutilizable y funcional, estß muy hardcodeada (no podrÝa ser de otra forma siendo Batch).

En esta linea se determina que la operaciˇn de "progreso" ha terminado cuando el valor de la variable counter es igual o mayor que 50.
Citar
Código
  1. if %counter% GEQ 50 set msg=complete& set counterb=10000& goto exit

El valor de porcentage (si es que se le puede llamar asÝ) se define en la variable counterb, no juega ning˙n papel real en el algoritmo, tan solo es un dato visual y hardcodeado para que llegue a 100% (o mejor dicho a 10.000) al mismo tiempo que se escriben esos 50 "" es decir que el valor de la variable counter llegue a 50.

Sabiendo eso, y que tienes 14 executables que quieres instalar, o dicho de ora forma 14 operaciones a realizar, pues simplemente debes calcular y adaptar el cˇdigo a tus necesidades. Debes aumentar el lÝmite de 50 a 56, y por cada una de las 14 operaciones debes sumarle un "4" al valor de la variable counter (14*4=56), de esta forma conseguirar que el "progreso" finalice en 14 ciclos.

Pero ya te digo que eso resulta muy tedioso de hacer, si quieres evitar tener que copiar 14 veces el mismo bloque de cˇdigo entonces tienes que idear la forma de adaptar la ejecuciˇn de tus 14 operaciones en un For ...por ejemplo leyendo la primera linea de un archivo de texto que contenga la ruta hacia cada instalador (y posteriormente eliminar esa linea, para luego leer la siguiente linea en la siguiente iteraciˇn) ┐y que pasarß cuando en vez de 14 executables tengas 13, 10 o 21?, a volver a modificar todos los valores y empezar desde cero con la adaptaciˇn...

Sinceramente, esas "barras de progreso" en Batch no vale la pena ni tan siquiera fijarse en su decoraciˇn, no veo ninguna razˇn lo suficientemente sostenible ni inteligente para invertir tiempo y esfuerzo en adaptar el cˇdigo, amigo, t˙ lo que realmente necesitas es un software de creaciˇn de instaladores (o install builder) como por ejemplo InnoSetup, en el que puedes llevar a cabo la misma tarea que quieres hacer en Batch, solo que de forma eficiente, sofisticada, dinßmica, segura y con un estilo visual mucho mßs bonito. Si lo llegas a utilizar y aceptar este consejo que te doy, me lo agradecerßs, te lo aseguro. :P

Saludos!


« Última modificación: 26 Junio 2017, 06:25 am por Eleкtro » En línea


BDJMarcelo

Desconectado Desconectado

Mensajes: 17


Ver Perfil
Re: A˝adir codigo de Barra de Progreso a un BAT
« Respuesta #2 en: 27 Junio 2017, 06:09 am »

HOLA....

Estimado (Eleкtro)...

Te agradezco por tu respuesta y reflexiˇn a mi solicitud para poder a˝adir una barra de progreso a los siguientes instaladores.

Yo necesito poder ver de alguna manera el progreso de los instaladores ya que la mayorÝa lo hacen de forma (Desatendida).

El utilizar el programa InnoSetup, sˇlo me servirÝa para crear 1 sˇlo instalador y NO m˙ltiples y de forma normal o desatendida.

El cˇdigo bat es una peque˝a parte de mßs de 40 instaladores y que cuenta con diferentes maneras de instalar los programas, sˇlo lo puse cˇmo referencia para poder saber cˇmo modificarlo el mßs grande luego.

Simplemente me gustarÝa saber si me pueden colaborar en el foro a poder a˝adir o una barra de progreso o alg˙n tipo de porcentaje que me indique cuanto falta para que termine dicho proceso.

Agradezco a quien me pueda colaborar.... ;)

CAPTURAS DE CODIGOS


En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.699



Ver Perfil
Re: A˝adir codigo de Barra de Progreso a un BAT
« Respuesta #3 en: 27 Junio 2017, 09:24 am »

El utilizar el programa InnoSetup, sˇlo me servirÝa para crear 1 sˇlo instalador y NO m˙ltiples y de forma normal o desatendida.

No. Con InnoSetup (o cualquier otro install builder) puedes empaquetar los 14 executables que quieres instalar, en un solo executable/instalador, con barra de progreso. La instalaciˇn de esos 14 executables serß desatendida/silenciosa/automatizada, como quieras. De hecho si lo prefieres ni siquiera tienes que empaquetar esos executables, pueden estar ubicados en cualquier directorio (de la misma manera que lo estßn cuando los quieres ejecutar con un batch-script). Como ya dije, sirvirÝa para llevar a cabo la misma tarea que pretendes realizar en Batch, y no solo me refiero al procedimeinto de instalaciˇn de cada executable/instalador por individual de forma automatizada, sino tambiÚn a la creaciˇn de una interfßz de usuario o men˙ donde elegir el tipo de instalaciˇn, y etc.

Simplemente me gustarÝa saber si me pueden colaborar en el foro a poder a˝adir o una barra de progreso o alg˙n tipo de porcentaje que me indique cuanto falta para que termine dicho proceso.

Batch es un "lenguaje de programaciˇn" muy limitado el cual no ha sido pensado para ese tipo de tareas, cualquier cosa se vuelve compleja de realizar precisamente por su escasez, ya que no provee miembros built-in para ciertas tareas ni mucho menos componentes de interfaces grßficas. Si realmente quieres optar por la programaciˇn, entonces deberÝas considerar la idea de deshechar Batch y empezar a utilizar un lenguaje capacitado para esa tarea, un lenguaje de verdad, preferiblemente un lenguaje que posea un framework con un componente de progressbar/barra de progreso que te permita desarrollar de forma sencilla una GUI; unos ejemplos serÝan: C#, Java o VB.NET.

Pero es que de todas formas a la pregunta que formulaste ya se te explicˇ la soluciˇn, se te explicˇ cual es el valor que modificar y como podrÝas implementar la funcionalidad que deseas, ┐quÚ mßs dudas tienes con respecto a eso?... ┐lo has intentando hacer por ti mismo?.

PD: Aunque no te lo parezca, la opciˇn de utilizar un install builder es la mßs apropiada en estas circunstancias, precisamente por que es un software ideado especÝficamente para cumplir esa funcionalidad, la de proveer un procedimiento sofisticado (y personalizable) de instalaciˇn.

Saludos
« Última modificación: 27 Junio 2017, 09:32 am por Eleкtro » En línea


gado2612

Desconectado Desconectado

Mensajes: 17


Ver Perfil
Re: A˝adir codigo de Barra de Progreso a un BAT
« Respuesta #4 en: 3 Julio 2017, 20:43 pm »

Jejeje creo que es un poquito tarde para responder XD pero no lograba recuperar mi contrase˝a del foro XD...

Se me ocurrio esta forma sencilla, aunque sin barra de progreso pero como tu dijistes:

Cita de: BDJMarcelo link=topic=471562.msg2130505#msg2130505
[b
Simplemente me gustarÝa saber si me pueden colaborar en el foro a poder a˝adir o una barra de progreso o alg˙n tipo de porcentaje que me indique cuanto falta para que termine dicho proceso.
[/b]

"O algun tipo de porcentaje que me indique cuanto falta" bueno si quieres algo que te indique cuanto falta pues esta es una manera:
Código
  1. :: By gado2612 [elhacker.net]
  2. @echo off
  3. color 17
  4. title Ejemplo elhacker.net
  5. echo Instalador automatico...
  6. echo.
  7. echo Desea comenzar? (s/n)
  8. :opcion
  9. set /p respuesta=:
  10. if "%respuesta%" == "s" goto comenzar
  11. if "%respuesta%" == "n" goto cancelar
  12. echo Esta opcion "%respuesta%" es incorrecta...
  13. echo Solo se admiten como opciones la "s" y "n" en minusculas...
  14. echo Intentalo de nuevo...
  15. goto opcion
  16. :comenzar
  17. echo.
  18. echo Instalando Programa1 (Falta un programa)
  19. start programa1.exe /wait
  20. echo Instalando Programa2 (No falta ninguno xD)
  21. start programa2.exe /wait
  22. echo Y asi sucesivamente...
  23. pause
  24. :cancelar
  25. exit
  26.  
pues solo lo hago por ayudar, me gusta ayudar, pero eso es lo que se me ocurrio, si no te parece bien pues utiliza lo que te dijo el amigo elcktro XD
En línea

Si no tienes nada bueno que decir, mejor mantÚn la boca cerrada...
BDJMarcelo

Desconectado Desconectado

Mensajes: 17


Ver Perfil
Re: A˝adir codigo de Barra de Progreso a un BAT
« Respuesta #5 en: 3 Julio 2017, 21:02 pm »

HOLA.....

( gado2612 )

Muchas gracias por tu aporte, lo voy a probar a ver que tal....

  ;-)   ;-) 
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
ARCHIVOS .BAT + BARRA DE PROGRESO
Scripting
martinsan99 7 19,185 Último mensaje 25 Mayo 2007, 18:43 pm
por pantocrator
Hacer una barra de progreso en C#
.NET (C#, VB.NET, ASP)
nico56 5 13,777 Último mensaje 28 Diciembre 2009, 06:37 am
por nico56
barra de progreso
.NET (C#, VB.NET, ASP)
DaNuK 2 3,571 Último mensaje 10 Marzo 2010, 02:05 am
por DaNuK
VBS barra de progreso
Programaciˇn Visual Basic
quico5 0 2,617 Último mensaje 14 Agosto 2012, 20:41 pm
por quico5
barra de progreso en c++
Programaciˇn C/C++
d91 4 4,142 Último mensaje 27 Abril 2014, 21:25 pm
por amchacon
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines