Уровень ошибок команды «Выбор» пакетного файла возвращает 0

Я пытаюсь создать командный файл, который выполняет различные команды «выбора» в зависимости от версии Windows, в которой выполняется. Синтаксис команды выбора отличается в Windows 7 и Windows XP.

Команда выбора возвращает 1 для Y и 2 для N. Следующая команда возвращает правильный уровень ошибки:

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

Однако, когда она сочетается с командой для обнаружения в версии ОС Windows errorlevel возвращает 0 перед AN после команды выбора как в моих блоках кода Windows XP, так и в 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.
)

Как видите, я даже пытался очистить переменную errorlevel перед выполнением команды выбора, но уровень ошибки остается равным 0 после выполнения команды выбора.

Есть какие-нибудь советы? Спасибо!

7
задан lbrtdy 22 December 2011 в 22:50
поделиться