Cómo ejecutar el comando de elección pero no hacer nada

Mi script para lotes usa el comando de elección. Y en mi guión me gustaría comprobar si elegir. exe existe porque es la aplicación que tiene el comando de elección.

Y sé exactamente cómo hacerlo. Al ejecutar el comando de elección y hacerlo de modo que si falla, sale del script

choice || goto:nochoiceapp

:nochoiceapp
echo Cannot continue with script
echo Your system doesn't have choice.exe
pause

Pero quiero hacer esto al comienzo de mi guión. No sólo cuando se necesita el comando de elección.

Y quiero que esto sólo compruebe si elige. Exe existe, en realidad no ejecutando "elección". Esto conduciría a una pronta elección

¿Cómo lo hago para que ejecute el comando de elección pero no hace nada?

Pregunta hecha hace 3 años, 4 meses, 29 días - Por scriptwarrior


4 Respuestas:

  • La elección es un sistema regular ejecutable que se encuentra en System32. Simplemente puede comprobar que el archivo existe.

    if not exist "%SystemRoot%\System32\choice.exe" goto :nochoiceapp
    

    Respondida el Dec 16, 2020 a las 16:19 - por quantumquasar

    Votos positivos: 0 | Votos negativos: 0

  • Aquí hay una alternativa, que permite la utilidad de Microsoft choice.exe para estar ubicado en el directorio actual, en algún lugar %PATH%, o definido dentro del registro como directamente ejecutable.

    choice.exe /D N /T 0 2> NUL 1>&2 & If Not ErrorLevel 2 GoTo nochoiceapp
    

    La idea es que entra automáticamente N al predeterminado [Y,N]? que significa que si ErrorLevel no 2, el ejecutable no existía en ninguna de las ubicaciones, o lo hizo, pero no era la utilidad correcta.

    Tenga en cuenta los idiomas que no utilizan N como la opción 'No' predeterminada, debe cambiar la N en consecuencia.

    Respondida el Dec 16, 2020 a las 16:24 - por devgeek

    Votos positivos: 0 | Votos negativos: 0

  • Puedes verificar si el archivo choice.exe existe en el sistema sin ejecutar realmente el comando choice utilizando un código similar al siguiente en tu script de lotes:

    batch
    @echo off
    IF EXIST C:\Windows\System32\choice.exe (
        echo choice.exe found
    ) ELSE (
        echo choice.exe not found
        exit /b
    )
    
    rem Tu script continua aquí...
    
    

    En este código, verificamos si el archivo choice.exe existe en la ubicación típica de Windows. Si el archivo existe, se mostrará un mensaje indicando que choice.exe se ha encontrado, de lo contrario, mostrará un mensaje de que choice.exe no se ha encontrado y luego saldrá del script sin ejecutar nada más.

    De esta forma, puedes validar la presencia de choice.exe al comienzo de tu script sin realmente ejecutar el comando choice.

    Respondida el Dec 17, 2020 a las 16:15 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • Puedes usar el comando CHOICE /? para comprobar si la aplicación CHOICE.EXE existe en tu sistema sin ejecutar realmente el comando CHOICE. Aquí tienes un ejemplo modificado de tu código:

    
    @echo off
    
    CHOICE /? 1>NUL 2>NUL
    
    IF ERRORLEVEL 1 (
      echo Cannot continue with script
      echo Your system doesn't have choice.exe
      pause
      exit
    )
    
    

    En este código modificado:

    La línea CHOICE /? 1>NUL 2>NUL ejecuta el comando CHOICE /? y redirige su salida estándar y de error al dispositivo nulo (NUL). Esto suprime cualquier salida del comando. La línea IF ERRORLEVEL 1 comprueba el nivel de error devuelto por el comando CHOICE. Si el comando no existe, devolverá un nivel de error de 1, y el bloque IF se ejecutará.

    • Dentro del bloque `IF`, se muestran mensajes de error y se pausa la ejecución del script.

    Ten en cuenta que esta solución solo comprobará si CHOICE.EXE existe en la ruta actual. Si la aplicación está en una ruta diferente, tendrás que ajustar el código para que incluya esa ruta.

    Respondida el Dec 17, 2020 a las 16:23 - por Gemini

    Votos positivos: 0 | Votos negativos: 0