![Utilice O con condición en el script AutoHotkey](https://rvso.com/image/1642370/Utilice%20O%20con%20condici%C3%B3n%20en%20el%20script%20AutoHotkey.png)
Creé el siguiente script AHK para responder mi propia preguntaaquí:
NumpadEnter::
Process, Exist, httpd.exe
If ErrorLevel = 0
{
Run, C:\XAMPP\apache_start.bat,,Hide
Run, C:\XAMPP\mysql_start.bat,,Hide
}
Else
{
Run, C:\XAMPP\apache_stop.bat
Run, C:\XAMPP\mysql_stop.bat
Sleep, 2000
Run, C:\XAMPP\apache_start.bat,,Hide
Run, C:\XAMPP\mysql_start.bat,,Hide
}
Return
Sin embargo, el script no es perfecto: actualmente, solo verifica la existencia del proceso Apache httpd.exe
, pero XAMPP inicia tanto el servidor Apache como la base de datos MySQL, que utiliza el mysqld.exe
proceso. En el caso de que Apache esté inactivo pero MySQL esté activo, parece que la lógica del script fallaría, por lo que me gustaría corregir esta línea:
Process, Exist, httpd.exe
...para comprobar la existencia decualquiera httpd.exe
o mysqld.exe
.
AHK tiene un operador OR, para el cual puedes usar or
o ||
, pero haciendo:
Process, Exist, httpd.exe || mysqld.exe
...solo intenta iniciar los servidores (es decir, ejecutar el primer bloque de código, lo que indica una falla en la lógica y/o sintaxis). En otras palabras, no parece que OR pueda usarse junto con una condición como Process, Exist
.
¿Es esto posible con AHK?
Respuesta1
En una IF
expresión, AHK usa el operador or
(Documentación). Puede llamar Process
dos veces, almacenar el resultado cada vez y luego verificar si cualquiera de los dos es 0
.
Process, Exist, httpd.exe
errHTTPD := ErrorLevel
Process, Exist, mysqld.exe
errMYSQLD := ErrorLevel
If (errHTTPD = 0 or errMYSQLD = 0)
{
...
}
else
{
...
}
Como alternativa que no responde directamente a tu pregunta pero sí creo que funcionará en tu caso particular:
Process, Exist, httpd.exe
IfEqual, ErrorLevel, 0
Process, Exist, mysqld.exe
Primero, verifique httpd.exe
. Si eso es ErrorLevel
así 0
, busque mysqld.exe
.