I am trying to create a batch file that executes another “select” command based on an executable version of Windows. The syntax for the select command is different from Windows 7 and Windows XP.
The select command returns 1 for Y and 2 for N. The following command returns the correct error level:
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
However, when it is combined with a command to detect a version of Windows, errorlevel returns 0 before AN after the select command in my Windows XP and Windows 7 code blocks.
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. )
As you can see, I even tried to clear varlevellevel before executing the select command, but the error level remains at 0 after executing the select command.
Any tips? Thanks!
source share