Citar
┌─────────┐
SI
Winamp está en Play
↓ Ejecute el Script:
Abrir
1. Ds clock
2. DsLogo
↓
└─
┌─ Pero
Si el proceso Bsplayer .exe está ejecutándose o Winamp está en pausa
Ejecute el Script:
↓ Cerrar los programas
1. Ds clock
2. DsLogo
3. Barra
↓
FIN
└─────────┘
SI
Winamp está en Play
↓ Ejecute el Script:
Abrir
1. Ds clock
2. DsLogo
↓
└─
┌─ Pero
Si el proceso Bsplayer .exe está ejecutándose o Winamp está en pausa
Ejecute el Script:
↓ Cerrar los programas
1. Ds clock
2. DsLogo
3. Barra
↓
FIN
└─────────┘
Check.bat
Código
@Echo off :Check Rem Reseteamos la variable "CLOSE". Set Close= Rem Busca el proceso en activo "bsplayer", Si lo encuentra le da un valor a la variable "Close". Rem Busca el proceso en activo "winamp", Si lo encuentra busca la expresión regular en la ventana de título del proceso, para saber si está en pausa y/o detenido, Y si encuentra una de las dos coincidencias le da un valor a la variable "Close" Rem Si la variable "close" está definida, Mata los siguientes procesos. REM Si la variable "CLOSE" NO está definida, Abre los siguientes procesos. Start /B dsclock.exe Start /B dslogo.exe ) Ping -n 3 LOCALHOST >NUL Rem Vuelve a la etiqueta principal. Goto :Check
PD: No te recomiendo que uses el comando ping sin especificar un tiempo de espera (-n) mayor de "1", En tu code dejas el valor vacío y te consumirá bastantes recursos. Además Windows tarda unos segundos en actualizar la lista de procesos etc, Así que no vale la pena comprobar el comando tasklist cada milisegundo, Cada 3 segundos está bien.
Saludos