Autohotkey Fallback si el programa no existe

Autohotkey Fallback si el programa no existe

Estoy tratando de tener mi cygwin.shEl programa se abre cuando presiono la tecla Windows + R (esto podría aplicarse fácilmente a cualquier otra combinación de teclas), pero me doy cuenta de que es posible que no todas mis computadoras tengan cygwin instalado. En el caso de que mi computadora no tenga cygwin, me gustaría simplemente abrir el símbolo del sistema de Windows.

¿Cómo configuro condicionalmente la #rasignación (Win+R) para lograr esto?

Respuesta1

Esto no está probado, pero debería ayudarle a comenzar:

#r::
Run sh
WinWait,sh,,1
if ErrorLevel
{
   ;it timed out waiting for sh (1 sec)
   Run cmd
}
return

Intenta ejecutar el shcomando cygwin. Utilizando elganaresperarfunción, verifica si se creó (usando un título de ventana de "sh", que puede ser necesario cambiar). Si no, vuelve a caer a run cmd.

Otra opción, si siempre conoces la ruta absoluta de sh.exe, puedes usar elarchivoexistirmétodo.

#r::
if FileExist("c:\cygwin\sh.exe")
   Run sh
else
   Run cmd
return

Respuesta2

La respuesta de @yhw42Me ayudó a empezar, pero encontré una solución más limpia:

WinR := "sh"
RunWait, where sh
if ErrorLevel
    WinR := "cmd"

#r::Run %WinR%

Esto utiliza el WHEREcomando de Windows yVariables de teclas de acceso rápido automático.

información relacionada