वर्तमान निर्देशिका को बैच फ़ाइल निर्देशिका में बदलें


18

मेरे पास batविंडोज़ पर एक फाइल है जो एक प्रोकंप ऑपरेशन को अंजाम देती है। बैच फ़ाइल के साथ समस्या यह है कि मुझे नौकरी करने से पहले बैच फ़ाइल निर्देशिका में सीडी की आवश्यकता है, अन्यथा स्क्रिप्ट काम नहीं करेगी।

वर्तमान बैच फ़ाइल निर्देशिका में कैसे बदलें?

मैंने अपने में निम्नलिखित कोड आज़माया procdump.bat:

cd "%~dp"
procdump -h devenv.exe mydump.txt

लेकिन यह विफल रहा, त्रुटि संदेश है:

बैच-पैरामीटर प्रतिस्थापन में पथ ऑपरेटर का निम्नलिखित उपयोग अमान्य है:% ~ dp "

मान्य फॉर्मेट के लिए CALL / टाइप करें? या के लिए /?

संपादित करें: प्रदान किया गया उत्तर काम कर रहा है, लेकिन केवल एक ही पकड़ है: अगर मेरी वर्तमान निर्देशिका बैच फ़ाइल निर्देशिका से अलग है, तो मुझे "सिस्टम निर्दिष्ट पथ नहीं मिल सकता है" मिलेगा। किसी के पास कोई विचार है?


आप कहाँ से "% ~ dp" प्राप्त करते हैं?
fretje

जवाबों:


24

ठीक है, मुझे लगता है कि मैंने यहां पाया कि आपका क्या मतलब है %~dp

मुझे लगता है कि आप वास्तव में ऐसा करना चाहते हैं:

cd /D "%~dp0"

(!) लेकिन ध्यान दें कि यह तब भी आपको सही व्यवहार नहीं देगा जब आप अपने बैच को निष्पादित करने का प्रयास कर रहे हों, जबकि वर्तमान निर्देशिका किसी अन्य ड्राइव पर हो क्योंकि cdसक्रिय ड्राइव को नहीं बदलता है।

संपादित करें : जाहिरा तौर पर (धन्यवाद @Yoopergeek ) आप इसे सक्रिय ड्राइव को बदलने के लिए /Dपैरामीटर को cdकमांड में जोड़ सकते हैं ।


इन बैच मापदंडों के बारे में अधिक जानकारी के लिए help call, एक cmdप्रॉम्प्ट पर देखें ।
अगली सूचना तक रोक दिया गया।

वैसे, आप उन मापदंडों को इस तरह से जोड़ सकते हैं:%~dp0
अगली सूचना तक रोक दिया गया।

आपका उत्तर सहायक है; लेकिन अगर मेरी वर्तमान निर्देशिका एक अलग निर्देशिका में है जो बैच फ़ाइल है, तो उपरोक्त कमांड विफल हो जाएगी; भी cd /Dया cd "%~dp0" /Dमदद नहीं कर सकता।
ग्रेविटन

@ एनग सून हुई: बैच फ़ाइल की तुलना में आपका वर्तमान डायर एक अलग डायर पर है। लेकिन वह आदेश विफल क्यों होगा? मैंने इसे यहाँ परीक्षण किया है और यह काम करता है।
fretje

1
मैंने उपयोग करके समाधान ढूंढ लिया है cd /D "%~dp0"। धन्यवाद।
ग्रेविटन

4

मैं fretje के जवाब के लिए एक टिप्पणी छोड़ दूँगा, लेकिन जाहिर है मैं नहीं कर सकता ???


नोट के बारे में वैसे भी:
लेकिन ध्यान दें कि यह तब भी आपको सही व्यवहार नहीं देगा जब आप अपने बैच को निष्पादित करने की कोशिश कर रहे हों, जबकि वर्तमान निर्देशिका किसी अन्य ड्राइव पर है क्योंकि सीडी सक्रिय ड्राइव को नहीं बदलता है।


/Dअपने सीडी कमांड में स्विच का उपयोग करें , और सीडी सक्रिय ड्राइव को बदल देगा।


... फिर भी मैं अपने जवाब पर टिप्पणी कर सकता हूं। यार, सर्वरफॉल्ट पर कोई प्रतिनिधि नहीं होने के लिए बेकार है ... काश कोई SO प्रतिनिधि यहाँ पर 'bled' करे।
योपरजेक

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