BATCH - Problema en bucle infinito

Iniciado por llAudioslavell, 21 Septiembre 2016, 00:08 AM

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

llAudioslavell

Cita de: Eleкtro en 21 Septiembre 2016, 18:52 PM
Con este:





En fin, te explico...

Tomando como base el código que mostré, puedes determinar de forma individual el estado de cada proceso de la siguiente manera:

Código (DOS) [Seleccionar]
@Echo OFF & (CHCP 1252)1>&2>NUL
SetLocal EnabledelayedExpansion

:Loop
Set /A "isGUIactive=-1"
Set /A "isCLIactive=-1"
(Call :CheckGUI) & (Set /A "isGUIactive=!ERRORLEVEL!")
(Call :CheckCLI) & (Set /A "isCLIactive=!ERRORLEVEL!")

If "!isGUIactive!" EQU "0" (
   Echo:El proceso "openvpn-gui" está activo.
)

If "!isCLIactive!" EQU "0" (
   Echo:El proceso "openvpn" está activo.
)

If "!isGUIactive!" EQU "0" If "!isCLIactive!" EQU "0" (
   Echo:Ambos procesos está activos.
)

(TimeOut /T 1 /NoBreak)1>&2>NUL
GoTo :Loop

:CheckGUI
(TaskList.exe /FI "IMAGENAME eq openvpn-gui.exe" | Find "openvpn-gui.exe")1>&2>NUL
Exit /B "%ERRORLEVEL%"

:CheckCLI
(TaskList.exe /FI "IMAGENAME eq openvpn.exe" | Find "openvpn.exe")1>&2>NUL
Exit /B "%ERRORLEVEL%"


Estimado Elektro, la parte del codigo ya lo hice  ;-) necesito mostrartelo para que me ayudes verificando si esta bien. Lo que nose es como hace para que mi codigo se vea como el tuyo cuando lo publicas  :(  :(  o sea con ese marco

llAudioslavell

#11
Código (bash) [Seleccionar]
@Echo OFF & (CHCP 1252)1>&2>NUL
SetLocal EnabledelayedExpansion

:Loop
Set /A "exitCodeCount=0"
(Call :CheckGUI) & (Set /A "exitCodeCount=!ERRORLEVEL!")
(Call :CheckCLI) & (Set /A "exitCodeCountt=!ERRORLEVEL!")

If "!exitCodeCount!" EQU "0" (
   Echo:GUI Open
If "!exitCodeCountt!" EQU "0" (
Echo:Conex Open
) else (
Echo:Conex Close
)
) else (
Echo:GUI Close
)

(TimeOut /T 1 /NoBreak)1>&2>NUL
GoTo :Loop

:CheckGUI
(TaskList.exe /FI "IMAGENAME eq openvpn-gui.exe" | findstr "openvpn-gui.exe")1>&2>NUL
Exit /B "%ERRORLEVEL%"

:CheckCLI
(TaskList.exe /FI "IMAGENAME eq openvpn.exe" | findstr "openvpn.exe")1>&2>NUL
Exit /B "%ERRORLEVEL%"


Ya esta  ;-) Este programa me monitorea a la perfeccion ambos procesos, aqui te mando lo que en realidad quiero hacer:

Código (bash) [Seleccionar]

@Echo OFF & (CHCP 1252)1>&2>NUL
SetLocal EnabledelayedExpansion

:Loop
Set /A "exitCodeCount=0"
(Call :CheckGUI) & (Set /A "exitCodeCount=!ERRORLEVEL!")
(Call :CheckCLI) & (Set /A "exitCodeCountt=!ERRORLEVEL!")

If "!exitCodeCount!" EQU "0" (
   Echo:GUI Open
If "!exitCodeCountt!" EQU "0" (
Echo:Conex Open
) else (
rem: aqui si la conexion esta cerrada, cierrlo el programa y lo abro con la conexion.
taskkill /IM openvpn-gui.exe
"C:\Program Files (x86)\xxxxx\xxxxx SSL VPN Client\bin\openvpn-gui.exe" --connect xxxxxxx@cxxxxxxxx.xxxxx.ovpn
)
) else (
rem: aqui abro el programa y con "--connect" abro la conexion
"C:\Program Files (x86)\xxxxx\xxxxx SSL VPN Client\bin\openvpn-gui.exe" --connect xxxxxxx@cxxxxxxxx.xxxxx.ovpn
)

(TimeOut /T 1 /NoBreak)1>&2>NUL
GoTo :Loop

:CheckGUI
(TaskList.exe /FI "IMAGENAME eq openvpn-gui.exe" | findstr "openvpn-gui.exe")1>&2>NUL
Exit /B "%ERRORLEVEL%"

:CheckCLI
(TaskList.exe /FI "IMAGENAME eq openvpn.exe" | findstr "openvpn.exe")1>&2>NUL
Exit /B "%ERRORLEVEL%"


Creo que se entiende a la perfeccion, el problema es que cuando openvpn-gui esta cerrado, ejecucto el script, abre ambos procesos sin ningun problema ! el problema es que cuando desconecto o sea cuando se ejecuta openvpn, el programa se queda ahi pasmado, como si el bucle se hubiera detenido y cuando cierro openvpn-gui el programa lo vuelve a abrir, eso esta perfecto ! pero se sigue quedando ahi pasmado como si no fuera un bucle :/

Ayudameee porfavor  :( :( :( :( :(


PSDT:

Código (bash) [Seleccionar]
If "!exitCodeCountt!" EQU "0" (
Echo:Conex Open
) else (
rem: aqui si la conexion esta cerrada, cierrlo el programa y lo abro con la conexion.
taskkill /IM openvpn-gui.exe
"C:\Program Files (x86)\xxxxx\xxxx SSL VPN Client\bin\openvpn-gui.exe" --connect xxxxxxxxxxx@xxxxxxxxxx.xxxx.ovpn
Echo:Conex Close
)


Aqui esta el problema, entra al else solo  cuando abro el batch pero luego cuando desconecto manualmente el vpn ya no vuelve a conectar. Revise con el comando tasklist en cmd y si abre el proceso openvpn cuando abro la conexion y el proceso desaparece o  se cierra cuando cierro la conexion. Alguna explicacion?? iluminamee porfavor  :( :(

PSDT: Perdon por modificar 2 veces  ;-)

llAudioslavell

Perdonnn, ya logre conseguirlo  ;-)  ;-)  ;-)  ;-)  ;-)  ;-)  ;-)  ;-) Muchisimas graciass Elektroo Te amooooooo :'( :'(  :'( Graciasssssssssssssssss