2010-12-12 17 views
318

मैं कुछ चीज़ स्वचालित करने के लिए कुछ बैच फ़ाइलों को बनाना चाहता हूं।बैच फ़ाइल में वर्तमान निर्देशिका क्या है?

मेरा सवाल यह है कि जब मैं बैच फ़ाइल बनाता हूं। वर्तमान निर्देशिका क्या है? क्या यह निर्देशिका है जहां फ़ाइल स्थित है या यह cmd में दिखाई देने वाली एक ही निर्देशिका है?

उत्तर

660
अपने बैच फ़ाइल के भीतर से

:

  • %cd% आप current working directory (चर)
  • %~dp0 आप बैच फ़ाइल की निर्देशिका का पूर्ण पथ (स्थिर)
+5

@ Јοеу - '% 0' वर्तमान सबरूटीन का नाम दे सकते हैं, लेकिन'% ~ dp0' ** ** ** निष्पादन बैच फ़ाइल के लिए पूरा पथ दे देंगे। – dbenham

+68

असल में, ऐसा लगता है कि% ~ dp0 * निर्देशिका * के लिए पूर्ण पथ देता है कि निष्पादन बैच फ़ाइल में है।% ~ Dpnx0 (जो% ~ f0 के बराबर है) बैच फ़ाइल को पूरा पथ देता है। अधिक जानकारी के लिए http://www.robvanderwoude.com/parameters.php देखें। – deadlydog

+5

इसी तरह के प्रश्न के अच्छे विस्तृत उत्तर भी देखें: [विंडोज बैच स्क्रिप्ट (.bat) में पास किए गए तर्कों की सूची प्राप्त करें] (http: // stackoverflow।कॉम/क्यू/357315/938111) – olibre

3

यह वह निर्देशिका है जहां से आप बैच फ़ाइल शुरू करते हैं। जैसे यदि आपका बैच c:\dir1\dir2 में है और आप cd c:\dir3 करते हैं, तो बैच चलाएं, वर्तमान निर्देशिका c:\dir3 होगी।

20

यह आमतौर पर वह निर्देशिका है जिसमें बैच फ़ाइल शुरू होती है, लेकिन यदि आप शॉर्टकट से बैच फ़ाइल प्रारंभ करते हैं, तो एक अलग प्रारंभिक निर्देशिका दी जा सकती है। साथ ही, जब आप cmd में हैं, और आपकी वर्तमान निर्देशिका c:\dir3 है, तो आप अभी भी c:\dir1\dir2\batch.bat का उपयोग कर बैच फ़ाइल प्रारंभ कर सकते हैं, इस स्थिति में, वर्तमान निर्देशिका c:\dir3 होगी।

2

दे देंगे दे देंगे मान लें कि आप अपनी वर्तमान निर्देशिका में एक फाइल खोल रहे थे। आदेश होगा:

start %cd%\filename.filetype 

मुझे उम्मीद है कि मैंने आपके प्रश्न का उत्तर दिया है।

set mypath=%cd% 
echo %mypath% (where %mypath% is the current directory that the batch file is sitting in) 

तो कहते हैं कि तुम Myprog.exe खोलने के लिए इच्छुक गया:

5

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

start %mypath%\Myprog.exe 

यह वर्तमान फ़ोल्डर से Myprog खोल देगा।

दूसरा विकल्प सी में निर्देशिका बनाना है: जिसे AutomatePrograms कहा जाता है। उसके बाद, आप उस फ़ोल्डर में अपने फ़ाइलों को हस्तांतरण तो आप उन्हें निम्न आदेश का उपयोग कर खोल सकते हैं:

start C:\AutomatePrograms\Myprog1.exe 
start C:\AutomatePrograms\Myprog2.exe 
start C:\AutomatePrograms\Myprog3.exe 
+0

जैसा कि शीर्ष उत्तर में बताया गया है, '% cd%' वैरिएबल है, इसलिए विंडोज एक्सप्लोरर से बैच फ़ाइल चलाने के रूप में व्यवस्थापक 'सी: \ विन्डोज़ \ system32' देगा जो लगभग निश्चित रूप से आप नहीं चाहते हैं। '% ~ डीपी 0' अधिक संगत है। – icc97

2

यह है जहाँ आप कमान अपने बैच फ़ाइल निष्पादित करने के लिए चलाने से निर्देशिका है।

ऊपर जवाब में उल्लेख किया है आप सत्यापित करने के लिए अपनी स्क्रिप्ट के लिए नीचे दिए आदेश जोड़ सकते हैं:

> set current_dir=%cd% 
> echo %current_dir% 
संबंधित मुद्दे