Опитвам се да създам партиден файл, който изпълнява различна команда „избор“ въз основа на версията на 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
Уиндоус експи:
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 OS, 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.
)
Както можете да видите, дори се опитах да изчистя променливата на нивото на грешка, преди да изпълня командата за избор, но нивото на грешка остава 0 след изпълнението на командата за избор.
Някакви съвети? Благодаря!