Tôi đang cố gắng tạo một tệp lô thực hiện lệnh 'choice' khác nhau dựa trên phiên bản Windows đang được thực thi. Cú pháp của lệnh lựa chọn khác nhau giữa Windows 7 và Windows XP.Số lần trả lời lỗi của lệnh 'choice' của hàng loạt 0
Choice lệnh trả về một 1 cho Y và 2 cho N. Các lệnh sau đây trả về mức độ chính xác lỗi:
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
Tuy nhiên , khi nó được kết hợp với một lệnh để phát hiện phiên bản hệ điều hành Windows, errorlevel trả về 0 trước AN sau khi lệnh lựa chọn trong cả hai khối mã Windows XP và Windows 7 của tôi.
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.
)
Như bạn có thể thấy, tôi thậm chí đã thử xóa biến errorlevel trước khi thực hiện lệnh lựa chọn, nhưng errorlevel vẫn ở 0 sau khi lệnh lựa chọn được thực thi.
Bất kỳ mẹo nào? Cảm ơn!