2010-04-28 6 views
45

मेरे पास एक ही फ़ोल्डर में .bat और .exe फ़ाइल है। मैं फ़ाइल को .bat से कॉल नहीं कर सका जब तक कि मैं इसे पूर्ण पूर्ण पथ नहीं डालता। क्या पथ निर्दिष्ट नहीं करने का कोई तरीका है?विंडोज बैच फ़ाइल के समान निर्देशिका में प्रोग्राम कैसे निष्पादित करें?

उत्तर

103

को %~dp0 के साथ कॉल करने का प्रयास करें, जैसे: %~dp0MyProgram.exe

%0 में .bat फ़ाइल नामक पूरा पथ शामिल है।

~dp\ पीछे पीछे ड्राइव और पथ प्राप्त करने के लिए कहता है।

+2

+1 वोट को यह लिंक Google खोज पर मिला - http://weblogs.asp.net/whaggard/archive/2005/01/28/get-directory-path-of-an-executing-batch-file। एएसपीएक्स – house9

+0

अच्छा स्पष्टीकरण, धन्यवाद! – enderland

+12

पैट्रिक कफ का उत्तर उपर्युक्त काम करता है, लेकिन निर्देशिका पथ के हिस्से के नाम पर रिक्त स्थान होने पर विफल रहता है। इसके आस-पास पहुंचने के लिए आपको .exe कॉल के चारों ओर डबल कोट्स डालना होगा। "% ~ dp0MyProgram.exe" –

0

अजीब लगता है? मैं कुछ समय के लिए खिड़कियों पर काम नहीं किया लेकिन

आप एक ./

./program.exe

वास्तव में होना चाहिए कोई अंतर नहीं के साथ अग्रणी कोशिश की थी? हो सकता है कि बल्ले सी: \ विंडोज के संदर्भ से निष्पादित हो रहा है या आपने अपने बैच को किसी अन्य बिंदु पर किसी अन्य डीआईआर को किया है?

+0

आपका मतलब था। \ (यानी, बैकस्लैश)। –

+0

मुझे लगता है कि जब मैं बैच निष्पादित करता हूं तो इसे किसी अन्य निर्देशिका से निष्पादित किया जा रहा है। –

+1

शायद मेरा प्रश्न है "बैच फ़ाइल को डबल क्लिक करने के लिए और इसे उसी निर्देशिका में निष्पादित करने के तरीके के रूप में कैसे करें?" –

11

मैंने स्क्रिप्ट की शुरुआत में pushd का उपयोग कर कार्यशील निर्देशिका को बदलकर हल किया और बहाल popd का उपयोग कर स्क्रिप्ट के अंत में है। इस तरह आप हमेशा काम कर सकते हैं निर्देशिका निर्देशिका बैट फ़ाइल के स्थान के समान ही है।

pushd %~dp0 
ProgramInSameFolderAsBat.exe 
popd 
संबंधित मुद्दे