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 siErrorLevel
no2
, 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 laN
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 comandochoice
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 quechoice.exe
se ha encontrado, de lo contrario, mostrará un mensaje de quechoice.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 comandochoice
.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ónCHOICE.EXE
existe en tu sistema sin ejecutar realmente el comandoCHOICE
. 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 comandoCHOICE /?
y redirige su salida estándar y de error al dispositivo nulo (NUL
). Esto suprime cualquier salida del comando. La líneaIF ERRORLEVEL 1
comprueba el nivel de error devuelto por el comandoCHOICE
. Si el comando no existe, devolverá un nivel de error de 1, y el bloqueIF
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