बैच फ़ाइल तर्क में प्रतिशत चिन्ह (% और %%) का क्या अर्थ है?


11

मुझे लगता है कि मुझे कुछ याद आ रहा है क्योंकि मुझे इसका मतलब नहीं मिल रहा है।

उदाहरण:

for /D %%A in (*) do "\7za.exe" u -t7z -m9=LZMA2 "%%A.7z" "%%A"

यह पंक्ति 7zipव्यक्तिगत फ़ोल्डरों को संपीड़ित करने के लिए एक कमांड लाइन संस्करण का उपयोग करने वाली थी , लेकिन मैं %%Aइस संदर्भ में क्या मतलब है के रूप में स्टम्प्ड हूं ।



1
कमांड लाइन और बाथ फ़ाइल उलझन में है। शीर्ष पर साइन बदल दिया।
जिम कीगर

जवाबों:


12

forआदेश ताकि आप बाद में क्वेरी में उपयोग के लिए कारकों के साथ पारित कर सकते हैं एक प्लेसहोल्डर की जरूरत है, हम इसे प्लेसहोल्डर का उपयोग कह रहे हैं %A, कारण कोड आप का उपयोग करता है देखा %%A(जहाँ आप इस पाया जो मुझे लगता है है) है, क्योंकि एक बैच फ़ाइल के अंदर %इसका एक विशेष अर्थ है, इसलिए आपको इसे दो बार करना चाहिए %%ताकि यह एक ही बार में बदल %जाए, जिसे forकमांड में पास किया जाए

वास्तव में कमांड क्या कर रही है, इसे तोड़ने के लिए कमांड के दो भाग हैं:

 for /D %%A in (*) do .....

वर्तमान फ़ोल्डर में प्रत्येक फ़ोल्डर के लिए यह भाग क्या कहता है %%A, वर्तमान में प्रसंस्करण फ़ोल्डर के नाम के साथ निम्नलिखित कमांड को निष्पादित करें ।

..... "\7za.exe" u -t7z -m9=LZMA2 "%%A.7z" "%%A"

इस भाग का कहना है कि कमांड को निष्पादित करें "\7za.exe" u -t7z -m9=LZMA2 "%%A.7z" "%%A"और %%Aवर्तमान रिकॉर्ड के साथ दो को बदलें जो हम प्रसंस्करण कर रहे हैं।


बस नाइटपिक के लिए - / डी फॉर लूप पर * वाइल्डकार्ड को निर्देशिकाओं तक सीमित किया जाएगा, न कि "इस फ़ोल्डर में हर फ़ाइल और प्रत्येक सबफ़ोल्डर" (कमांड एक्सटेंशन को सक्षम किया गया है)।
हर्नी

@ आप सही हैं, मैं मदद पृष्ठ पर / आर स्विच देख रहा था, मैंने अपना उत्तर सही कर लिया है।
स्कॉट चैंबरलेन

इसके लिए धन्यवाद, यह दिखाता है कि यह कितना अच्छा लगता है, लेकिन यह बहुत पुरातन सामान है, जिसे मुझे एक दंपती के लिए ऑनलाइन मैनुअल माध्यम से खोदना है।
जिम कीगर

0

यह एक परिवर्तनशील है।

वह विशेष उदाहरण एक फोर्स लूप के डायरेक्टरी ऑप्शन का उपयोग करता है, डायरेक्टरीज़ के माध्यम से पुनरावृति करता है और उन्हें %% A को असाइन करता है।

यह एक कमांड-लाइन उदाहरण भी नहीं है, लेकिन एक बैच फ़ाइल उदाहरण है। बैच फ़ाइलों में, आपको %% A का उपयोग करने की आवश्यकता है, जबकि कमांड-लाइन पर, आप% A का उपयोग करेंगे।


0

आपके परिदृश्य में, %% A एक प्लेसहोल्डर है जो "for" लूप के लिए है (जो / D निर्देशिका को इंगित करता है) से अधिक चल रहा है। इसलिए लूप का प्रत्येक पुनरावृत्ति, %% A निर्देशिकाओं में से एक है।

आपको बैच कोड में% के बजाय %% दिखाई देगा। आपको अपने कमांड प्रॉम्प्ट में उपयोग किए गए %% के बजाय% दिखाई देगा।

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.