2011-09-01 15 views
7

क्या आईएफ कथन के माध्यम से या पास करने का कोई तरीका है?एक आईएफ कथन में एक OR का उपयोग करना WinXP बैच स्क्रिप्ट

जैसे:

SET var=two 
IF "%var%"=="one" OR "two" OR "three" ECHO The number is between zero and four. 
+0

ओओएस संपादन जॉय के लिए धन्यवाद। – Mechaflash

उत्तर

12

सं

if "%var%"=="one" goto foo 
if "%var%"=="two" goto foo 
if "%var%"=="three" goto foo 
goto afterfoo 
:foo 
echo The number is between one and three (technically incorrect, since it includes the end points and thus is not between). 
:afterfoo 

आप एक अधिक संरचित दृष्टिकोण की जरूरत है:

if "%var%"=="one" set OneToThree=1 
if "%var%"=="two" set OneToThree=1 
if "%var%"=="three" set OneToThree=1 
if defined OneToThree (
    echo Foo 
) else (
    rem something 
) 
+0

figured = (। मैं इसे यादृच्छिक^और | के साथ इसे चालित करने की कोशिश करते समय थोड़ी देर के लिए गड़बड़ कर रहा था। लेकिन कोई भाग्य नहीं है – Mechaflash

+2

आप इस दृष्टिकोण का भी उपयोग कर सकते हैं: %% एक (एक दो तीन) के लिए "% var% "==" %% ए "गोटो फू – Aacini

0

खेल में देर से थोड़ा, लेकिन फिर भी यह करता है, तो यह सोचते हैं किसी को भी सवाल पर ठोकर खा सकता है। ,

(echo ":one: :two: :three:" | findstr /i ":%var%:" 1>nul 2>nul) && (
    echo The number is between zero and four 
) 

findstr बाद एक बाहरी कमांड है मैं एक पाश जो पुनरावृत्तियों के 1000 के माध्यम से जा सकते हैं अंदर यह प्रयोग नहीं कर सुझाव देते हैं: जिस तरह से मैं यह कर इस तरह से उपयोग कर रहा है गूंज का एक संयोजन findstr को पहुंचाया। यदि ऐसा नहीं है, तो यह एकाधिक Is का उपयोग करने के बजाय आप जो करने का प्रयास कर रहे हैं उसे हल करना चाहिए। इसके अलावा, ":" की पसंद में कुछ खास नहीं है, बस एक डिलीमीटर का उपयोग करें जो var चर में मान का हिस्सा होने की संभावना नहीं है।

अन्य लोगों को धन्यवाद, जो कि एक ही लिंक के समान इंगित करने के लिए धन्यवाद, मैं इस प्रतिक्रिया को भी पोस्ट कर दूंगा, अगर कोई उस प्रश्न पर ठोकर खाए और यहां तक ​​कि यहां तक ​​पहुंच न जाए।