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


510

मैं एक प्रोग्राम को स्वचालित करने के लिए कुछ बैच फाइलें बनाना चाहता हूं।

मेरा प्रश्न यह है कि जब मैं बैच फ़ाइल बनाता हूं, तो वर्तमान निर्देशिका क्या है? क्या यह वह निर्देशिका है जहाँ फ़ाइल स्थित है या यह वही निर्देशिका है जो कमांड प्रॉम्प्ट में दिखाई देती है, या कुछ और?

जवाबों:


1025

आपकी बैच फ़ाइल के भीतर से:

  • %cd%वर्तमान कार्य निर्देशिका (चर) को संदर्भित करता है
  • %~dp0 बैच फ़ाइल की निर्देशिका (स्थिर) के लिए पूर्ण पथ को संदर्भित करता है
  • %~dpnx0और %~f0दोनों बैच निर्देशिका और फ़ाइल नाम (स्थिर) के लिए पूर्ण पथ को संदर्भित करते हैं।

इसे भी देखें: % ~ dp0 का क्या अर्थ है और यह कैसे काम करता है?


5
@ Јοеу - %0वर्तमान सबरूटीन का नाम दे सकते हैं, लेकिन %~dp0जाएगा हमेशा क्रियान्वित बैच फ़ाइल का पूर्ण पथ दे।
दिनभन

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

6
इसी तरह के प्रश्न के अच्छे विस्तृत उत्तर भी देखें: Windows बैच स्क्रिप्ट (.bat) में पारित तर्कों की सूची प्राप्त करें
olibre

1
दुर्भाग्य से जब .net% ~ dp0 से एक प्रक्रिया के रूप में चलाया जाता है, तो कार्यशील निर्देशिका बैच फ़ाइलों की निर्देशिका नहीं है, यह कठिन तरीका है।
ट्रैम्पस्टर

3
एक अधिक स्पष्ट उदाहरण के रूप में, जब किसी .cmdफ़ाइल पर राइट-क्लिक किया जाता %cd%है C:\WINDOWS\system32और व्यवस्थापक के रूप में चल रहा होता है, %~dp0तो बैच फ़ाइल निर्देशिका को अनुगामी स्लैश के साथ देता और देता है।
icc97

25

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


11

एक बैच फ़ाइल में,% cd% वर्तमान निर्देशिका के लिए सबसे अधिक इस्तेमाल किया जाने वाला कमांड है, हालांकि आप अपना स्वयं का चर सेट कर सकते हैं:

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

तो कहते हैं कि आप Myprog.exe खोलना चाहते थे। यदि यह एक ही फ़ोल्डर में था, तो आप कमांड का उपयोग करेंगे:

start %mypath%\Myprog.exe

यह मौजूदा फ़ोल्डर से Myprog खोल देगा।

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

start "" "C:\AutomatePrograms\Myprog1.exe"
start "" "C:\AutomatePrograms\Myprog2.exe"
start "" "C:\AutomatePrograms\Myprog3.exe"

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

6

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

 start %cd%\filename.filetype

मुझे लगता है कि मैंने आपके सवाल का जवाब दे दिया है।


5

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

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

> set current_dir=%cd%
> echo %current_dir%  

4

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


0

बस मेरे 2 सेंट। यदि pendrive पर रखी गई बैच फ़ाइल (विंडोज 7) से कॉल करने पर निम्न कमांड विफल हो जाती है:

xcopy /s /e /i %cd%Ala C:\KS\Ala

लेकिन यह काम करता है:

xcopy /s /e /i %~dp0Ala C:\KS\Ala

यह वह स्विच है जो मैं उस बैच फ़ाइल के नाम के बिना अपने बल्ले फ़ाइल के मूल निर्देशिका पथ को निर्धारित करने के लिए देख रहा था:%~dp0
अम्मार मोहम्मद
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.