2015-02-06 84 views
0

我正在處理一個小批處理腳本,其中包含類似於下面的代碼塊的部分......這可能是一個輕描淡寫的說,這讓我很困惑,以至於我的思維已經完全麻木了...爲什麼在綠色背景上這是不行的...?批處理 - 通過選擇命令設置變量

@echo off 

set log=0 
choice /m "Choose " 
if errorlevel 2 set log=N 
if errorlevel 1 set log=Y 

echo %log% 
pause 

if "%log%"=="N" (
echo hello 
) 


if "%log%"=="Y" (
echo goodbye 
) 
pause 

回答

0
if errorlevel 2 set log=N 
if errorlevel 1 set log=Y 

翻譯:

如果錯誤級別是2或大於2組日誌= N
如果錯誤級別爲1或大於1張的組數= Y

所以 - 扭轉因爲如果錯誤級別是2,則它是2 or greater than 2(因此設置爲N)然後是1 or greater than 1(因此設置爲Y

+0

違抗標準約定選擇命令的語法,但它現在是有道理的你已經解釋了它。非常感謝你! – 2015-02-06 18:01:12

0

Windows(和舊DOS)中的一個奇怪之處在於,如果你設置「if errorlevel ...」,它實際上意味着「如果錯誤級別大於這個數字......」所以如果你說「如果錯誤級別1」 「如果錯誤級別> 1」。

試試這個:

if errorlevel 1 if not errorlevel 2 (do stuff)

if errorlevel 2 if not errorlevel 3 (do other stuff)

或者,您可以使用臨時變量%ERRORLEVEL%...

+0

感謝您的輸入。 :d – 2015-02-06 18:01:45