मैं एक बैच फ़ाइल बनाने की कोशिश कर रहा हूं जो विंडोज़ के संस्करण के आधार पर अलग-अलग 'पसंद' कमांड करता है। विंडोज 7 और विंडोज एक्सपी के बीच पसंद कमांड का सिंटैक्स अलग है।बैच फ़ाइल 'पसंद' कमांड का एररलेवल रिटर्न 0
विकल्प आदेश देता है वाई के लिए एक 1 और 2 एन के लिए निम्न आदेश देता है सही त्रुटि का स्तर:
विंडोज 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
हालांकि , जब इसे विंडोज ओएस संस्करण का पता लगाने के लिए एक कमांड के साथ जोड़ा जाता है, तो त्रुटि के बाद मेरे विंडोज एक्सपी और विंडोज 7 ब्लॉक कोड में विकल्प कमांड के बाद एएनएल से पहले 0 लौटाता है।
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 वर समाशोधन कोशिश की, लेकिन errorlevel के बाद चुनाव कमांड निष्पादित किया जाता है 0 पर बनी हुई है।
कोई सुझाव? धन्यवाद!