वर्तमान में निष्पादित बैच स्क्रिप्ट वाली निर्देशिका प्राप्त करें


30

मैं %0बैच फ़ाइल की युक्त निर्देशिका प्राप्त करने के लिए बैच फ़ाइल में उपयोग करता हूं, लेकिन परिणाम है: -

c:\folder1\folder2\batch.bat

मुझे सिर्फ निर्देशिका चाहिए, बिना बैच फ़ाइल के नाम, जैसे: -

c:\folder1\folder2\

मैं यह कैसे कर सकता हूं? शायद मुझे रास्ता छानना चाहिए। यदि हाँ, तो मैं यह कैसे कर सकता हूँ?


कमांड लाइन के भाग के रूप में बैच फ़ाइल में% 0 का उपयोग करते समय आपको% 0 \ .. \ RestOfStuff का उपयोग करना चाहिए। डबल डॉट इसे फ़ाइल नाम के पिछले हिस्से में ले जाता है।
जॉन गार्डनियर्स 8

वर्तमान में निष्पादित स्क्रिप्ट वाली निर्देशिका आवश्यक रूप से वर्तमान कार्य निर्देशिका (सीडी) के समान नहीं है! मैंने तदनुसार प्रश्न संपादित किया - यह अब "वर्तमान निर्देशिका" के शब्द से बचा जाता है।
चिस्कोदोरो

जवाबों:


52
%~p0

रास्ता ही लौटा देंगे।

%~dp0

ड्राइव + पथ लौटाएगा।

विषय पर अधिक जानकारी Microsoft की साइट पर पाई जा सकती है ।

इस सिंटैक्स के बारे में जानकारी विंडोज ओएस पर निष्पादित करके कमांड के लिए मदद के लिए भी पाई जा सकती है for /?


2
एक अन्य संदर्भ स्रोत के रूप में, जब आप टाइप करते हैं तो चर प्रतिस्थापन की एक ही सूची भी दिखाई जाती हैfor /?
केविन

% ~ dp0 निष्पादित बैच फ़ाइल की निर्देशिका देता है। यदि बैच फ़ाइल किसी भिन्न निर्देशिका में है, तो आपको वह अन्य निर्देशिका मिलती है। % CD% हमेशा आपको वर्तमान निर्देशिका देता है।
मिहाई दानिला

@ मिहाईडैनिला, नहीं, ओपी ने जो पूछा वह नहीं है।
बार्ट डे वोस

वास्तव में मुझे वर्तमान निर्देशिका प्राप्त करने का तरीका खोजते हुए यह प्रश्न मिला । यह गूगल पर पहली हिट थी। शीर्षक स्पष्ट रूप से वर्तमान निर्देशिका कहता है , हालांकि आप सामग्री के बारे में सही हैं। हम दोनों सही हैं, लेकिन मुझे लगता है कि मैं लेन हूं और मैं इस बारे में अधिक सही हूं कि सवाल वास्तव में क्या है, इसके बावजूद इसका क्या उद्देश्य था। इसीलिए मैंने लेन के उत्तर को छीन लिया है ... प्रश्न शीर्षक का नाम फिर से प्रश्न के साथ सिंक होना चाहिए।
मिहाई दानिला

1
संभवतः लिंक में लेख का शीर्षक आपूर्ति किया जा सकता था, क्योंकि लिंक अधिक वैध नहीं है .....
रूपसिंह मथावले

16

वर्तमान निर्देशिका% CD% में है


4
% CD% उस पथ को पुनः प्राप्त करें जिसे आप बैच से निष्पादित करते हैं, न कि जहाँ बैच फ़ाइल मौजूद है
मोहम्मद AL-Rawabdeh

4
@ मोहम्मद: वास्तव में, यह वर्तमान निर्देशिका है। दूसरी वह निर्देशिका है जहाँ बैच फ़ाइल है। वे दो समान नहीं हैं और आपका प्रश्न इस एक के लिए स्पष्ट रूप से पूछता है। तो कृपया इसे संपादित करें यदि ऐसा नहीं है तो आपका क्या मतलब है।
जॉय

% CD% बैच फ़ाइल का वर्तमान पथ देता है, लेकिन विफल रहता है जब हम बैच फ़ाइल को एक व्यवस्थापक के रूप में निष्पादित करते हैं। जब हम एक प्रशासक के रूप में बैच फ़ाइल चलाते हैं तो यह System32 का पथ देता है। इतना बेहतर विकल्प पूर्ण पथ के लिए% ~ dp0 का उपयोग करना है

% ~ dp0 निष्पादित बैच फ़ाइल की निर्देशिका देता है। यदि बैच फ़ाइल किसी भिन्न निर्देशिका में है, तो आपको वह अन्य निर्देशिका मिलती है। % CD% हमेशा आपको वर्तमान निर्देशिका देता है।
मिहाई दानिला

पाठक के संदर्भ के लिए - प्रश्न मूल रूप से "वर्तमान निर्देशिका" शब्द का उपयोग कर रहा था, जबकि स्क्रिप्ट युक्त निर्देशिका का अर्थ है - यह अब तय हो गया है।
चिकोडोरो

4

कुछ भाव जो फ़ाइल नाम को प्रभावित करते हैं:

~f0पूरी तरह से योग्य फ़ाइल नाम देगा।
~dpnx0के रूप में ही दे देंगे ~f0, लेकिन यह आपको दिखाता है कि आप इसे भागों में तोड़ सकते हैं: d = ड्राइव p = पथ n = नाम x = एक्सटेंशन


0

chdir कमांड का उपयोग करें

विकल्प 1:

chdir 

विकल्प 2:

echo %CD%

यहाँ भी यही है: यह ओपी का इरादा नहीं था - सवाल अब स्पष्ट है।
चिकोडोरो
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.