Estoy tratando de crear un archivo por lotes que realiza un comando diferente 'choice' basado en la versión de Windows que se está ejecutando. La sintaxis del comando de elección es diferente entre Windows 7 y Windows XP.Error del comando de "elección" del archivo por lotes returnlevel 0
elección comando devuelve un 1 para Y y 2 para N. El siguiente comando devuelve el nivel correcto de error:
Windows 7:
choice /t 5 /d Y /m "Do you want to automatically shutdown the computer afterwards "
echo %errorlevel%
if '%errorlevel%'=='1' set Shutdown=T
if '%errorlevel%'=='2' set Shutdown=F
Windows XP:
choice /t:Y,5 "Do you want to automatically shutdown the computer afterwards "
echo %ERRORLEVEL%
if '%ERRORLEVEL%'=='1' set Shutdown=T
if '%ERRORLEVEL%'=='2' set Shutdown=F
Sin embargo Cuando se combina con un comando para detectar la versión del sistema operativo Windows, errorlevel devuelve 0 antes que AN después del comando de opción en mis bloques de código de Windows XP y Windows 7.
REM Windows XP
ver | findstr /i "5\.1\." > nul
if '%errorlevel%'=='0' (
set errorlevel=''
echo %errorlevel%
choice /t:Y,5 "Do you want to automatically shutdown the computer afterwards "
echo %ERRORLEVEL%
if '%ERRORLEVEL%'=='1' set Shutdown=T
if '%ERRORLEVEL%'=='2' set Shutdown=F
echo.
)
REM Windows 7
ver | findstr /i "6\.1\." > nul
if '%errorlevel%'=='0' (
set errorlevel=''
echo %errorlevel%
choice /t 5 /d Y /m "Do you want to automatically shutdown the computer afterwards "
echo %errorlevel%
if '%errorlevel%'=='1' set Shutdown=T
if '%errorlevel%'=='2' set Shutdown=F
echo.
)
Como se puede ver, que incluso intentó despejar el nivel de error var antes de ejecutar el comando elección, pero se mantiene en nivel de error 0 después de ejecutar el comando elección.
¿Algún consejo? Gracias!