जवाबों:
प्रयत्न
if NOT "asdf" == "fdas" echo asdf
इसके बजाय NEQ का उपयोग करें।
if "asdf" NEQ "fdas" echo asdf
मुझे पता है कि यह काफी पुराना है, लेकिन पार्टी में देर से आने वालों के लिए यह उपयोगी हो सकता है। (EDIT: चूंकि यह अभी भी ट्रैफ़िक प्राप्त करता है और @Goozak ने टिप्पणियों में बताया है कि मेरे नमूने का मूल विश्लेषण गलत था।)
मैंने आपके लिंक में उदाहरण कोड से इसे खींच लिया है:
IF !%1==! GOTO VIEWDATA
REM IF NO COMMAND-LINE ARG...
FIND "%1" C:\BOZO\BOOKLIST.TXT
GOTO EXIT0
REM PRINT LINE WITH STRING MATCH, THEN EXIT.
:VIEWDATA
TYPE C:\BOZO\BOOKLIST.TXT | MORE
REM SHOW ENTIRE FILE, 1 PAGE AT A TIME.
:EXIT0
!%1==!
बस ==
यह सत्यापित करने का इरादा का एक मुहावरेदार उपयोग है कि बाईं ओर की चीज़, जिसमें आपका चर शामिल है, दाईं ओर की चीज़ से अलग है, जो नहीं है। !
इस मामले में सिर्फ एक चरित्र प्लेसहोल्डर है। यह कुछ भी हो सकता है। यदि %1
सामग्री है, तो समानता, झूठी हो सकता है अगर यह तुम सिर्फ की तुलना हो जाएगा नहीं है !
करने के लिए !
और क्या यह सच हो जाएगा।
!==!
एक ऑपरेटर नहीं है, इसलिए लेखन "asdf" !==! "fdas"
बहुत बकवास है।
उपयोग करने का सुझाव if not "asdf" == "fdas"
निश्चित रूप से जाने का रास्ता है।
!
मामले में यहां इस्तेमाल किया जाता है %1
खाली है, इस प्रकार की परीक्षा में जिसके परिणामस्वरूप है !==!
, जो सच है। आप %1.==.
इसके बजाय उपयोग कर सकते हैं (लगभग कोई भी चरित्र करेगा) - यह सुनिश्चित करने के लिए कि समानता परीक्षण के दोनों पक्षों के पास परीक्षण करने के लिए कुछ है। !==!
अंकन निश्चित रूप से है नहीं एक नहीं के बराबर के चिह्न। के साथ बेहतर छड़ी if not ...
।
प्रयत्न:
if not "asdf" == "fdas" echo asdf
विंडोज एक्सपी पर मेरे लिए यह काम करता है (मुझे आपके द्वारा पोस्ट किए गए कोड के समान त्रुटि मिलती है)।
NEQ का उपयोग आमतौर पर संख्याओं के लिए किया जाता है और == आमतौर पर स्ट्रिंग तुलना के लिए उपयोग किया जाता है।
मुझे कोई भी दस्तावेज नहीं मिल रहा है जो स्ट्रिंग तुलना (NEQ के स्थान पर) के लिए एक विशिष्ट और समकक्ष असमानता का उल्लेख करता है। IF NOT == का उपयोग करने वाला समाधान सबसे अधिक ध्वनि दृष्टिकोण लगता है। मैं तुरंत ऐसी परिस्थिति के बारे में नहीं सोच सकता जिसमें बैच फ़ाइल में संचालन का मूल्यांकन, IF NOT == तुलना पद्धति को स्ट्रिंग्स पर लागू करते समय किसी समस्या या अप्रत्याशित व्यवहार का कारण बन जाए।
काश, मैं इस बात की जानकारी दे पाता कि दोनों कार्य कैसे निचले स्तर पर अलग-अलग व्यवहार करते हैं - अलग-अलग बैच फ़ाइलों को डिसाइड करते हुए (जो NEQ और IF NOT == का उपयोग करते हैं) किसी भी सुराग की पेशकश करते हैं जिसके संदर्भ में (अनौपचारिक रूप से प्रलेखित) देशी कॉल conhost.exe उपयोग कर रहा है?