2013-04-04 8 views
14

मेरे पास एक सीडी पर बैच स्क्रिप्ट है। जब भी मैं इसे चलाने की कोशिश करता हूं और %~d0 दर्ज करता हूं, तो यह एफ: के बजाय सी: ड्राइव देता है, जो मेरी सीडी ड्राइव है।मैं ड्राइव अक्षर कैसे प्राप्त करूं जो बैच स्क्रिप्ट चल रहा है?

ड्राइव अक्षर खोजने का कोई तरीका क्या है?

+0

सटीक आदेश '% ~ d0' का उपयोग करता है क्या है? –

उत्तर

23

साथ वर्तमान निर्देशिका से ड्राइव अक्षर प्राप्त करें:

%cd:~0,2% 

% ~ dp0 एक बल्ला में बहुत उपयोगी है: यह फ़ोल्डर जिसमें क्रियान्वित बल्ला फ़ाइल रहता है।

शायद अपनी स्क्रिप्ट के शीर्ष पर

, की तरह कुछ कार्य करें:

set _SCRIPT_DRIVE=%~d0 
set _SCRIPT_PATH=%~p0 

और फिर डिबग करने के लिए इसे बाहर गूंज। % ~ d0 आपको जो चाहिए वह आपको देना चाहिए, लेकिन मैंने जो अन्य विकल्पों का उल्लेख किया है वह चुनौती को हल करने में सहायक हो सकते हैं।

+1

क्या% cd% पथ को आप _executing_ से नहीं देते हैं, हालांकि? वास्तविक बैच फ़ाइल के पथ को प्राप्त करने के लिए यह पूरी तरह से गलत है। उदाहरण के लिए, विंडोज एक्सपी में विचित्र बग है कि यदि आप फ़ाइल को किसी प्रोग्राम/स्क्रिप्ट पर ड्रैग और ड्रॉप करते हैं, तो उस फ़ाइल को निष्पादित करने के लिए प्रोग्राम के तर्क के रूप में देने के लिए, प्रोग्राम रहस्यमय रूप से c: \ दस्तावेज़ों और सेटिंग्स से लॉन्च होगा अपने फ़ोल्डर से बजाय \\ (उपयोगकर्ता नाम) निर्देशिका। – Nyerguds

+1

लगता है कि यह XP के बाद बदल गया है, लेकिन Win7 में यह पैरामीटर फ़ाइल के पथ से निष्पादित लगता है ... जो अभी भी गलत है। – Nyerguds

0

आप %~dp0 उपयोग कर सकते हैं वर्तमान/कार्यशील निर्देशिका पाने के लिए:

%~d0 
संबंधित मुद्दे