2013-01-24 47 views
54

मैं हाल ही में एक लाइन एक .cmd फ़ाइल में इस के समान शामिल:cmd फ़ाइल में% और %% के बीच क्या अंतर है?

for /f %%f in ('dir /b .\directory\*.sql') DO sqlcmd -b -o ".\directory\output\%%f.txt" -i ".\directory\%%f" 

मूल रूप से मैं केवल इस्तेमाल किया था% च, और जब कमांड लाइन पर चलने यह ठीक काम करेगा, लेकिन नहीं जब फ़ाइल के माध्यम से चलाने । जब मैं %% f पर स्विच करता था, तो यह फ़ाइल में काम करता था। बस सोच रहा है कि अंतर क्या है।

उत्तर

86

(। अधिक जानकारी के में स्पष्टीकरण this Microsoft kb में पाया जा सकता)

तीन बातें:, %2%1:

  1. प्रतिशत चिह्न आदेश पंक्ति पैरामीटर का प्रतिनिधित्व करने के बैच फ़ाइलों में प्रयोग किया जाता है , ...
  2. उनके बीच किसी भी वर्ण के साथ दो प्रतिशत संकेत एक चर के रूप में व्याख्या किए गए हैं:


क्यों है:

echo %myvar%

  • दो प्रतिशत चिह्न के बीच में कुछ भी (एक बैच फ़ाइल में) के बिना एक आदेश में एक भी प्रतिशत चिह्न (नहीं एक बैच फ़ाइल) की तरह व्यवहार कर रहे हैं उस?

    उदाहरण के लिए, अगर हम अपने (सरलीकृत) कमांड लाइन

    FOR /f %f in ('dir /b .') DO somecommand %f 
    
    एक बैच फ़ाइल में

    , नियम पर अमल 2 एक चर के रूप में

    %f in ('dir /b .') DO somecommand % 
    

    व्याख्या करने के लिए कोशिश करेंगे। आदेश है कि रोकने के लिए, आप एक दूसरे % साथ नियम 3 लागू करते हैं और % से बचने के लिए है:

    FOR /f %%f in ('dir /b .') DO somecommand %%f 
    
  • +14

    वहाँ कारण है कि मैं पाश के लिए एक में सिर्फ एक प्रतिशत चिह्न का उपयोग कर के साथ भाग प्राप्त कर सकते हैं के लिए एक स्पष्टीकरण है, जब कमांड प्रॉम्प्ट से सीधे निष्पादित किया गया, और बैच फ़ाइल से नहीं? मुझे डॉस विरासत के बारे में पता है, लेकिन हम ** अब कमांड लाइन से चर का उपयोग कर सकते हैं। –

    +3

    इसके अलावा, सुनिश्चित करें कि चर एक एकल वर्ण है। – jiggunjer

    10

    डॉस में आप कमांड लाइन पर पर्यावरण चर का उपयोग नहीं कर सकते, केवल बैच फाइलों में, जहां उन्होंने % को डिलीमीटर के रूप में साइन किया था। यदि आप एक बैच फ़ाइल में एक शाब्दिक % साइन इन करना चाहते थे, उदा। echo कथन में, आपको इसे दोगुना करने की आवश्यकता है।

    यह विंडोज एनटी पर चला गया जिसने कमांड लाइन पर पर्यावरण चर को अनुमति दी, हालांकि पिछली संगतता के लिए आपको अभी भी एक .cmd फ़ाइल में अपने % संकेतों को दोगुना करने की आवश्यकता है।