2011-07-22 5 views
31

मैं वर्तमान स्थान के साथ एक चर सेट कैसे कर सकता हूं? जैसे कि अगर मैं c: \ test में मिलता हूं और चर सेट करता हूं तो यह परीक्षण होगा .. और यदि मैं अंदर आ जाता हूं: \ test \ test2 वेरिएबल test2 होगा? ...बैच स्क्रिप्ट वर्तमान पथ स्थान के साथ एक चर सेट करने के लिए

मैं कई फ़ोल्डरों के अंदर आने के लिए उपयोग करने के बारे में सोच रहा हूं और जांचता हूं कि कुछ फ़ाइल मौजूद है, अगर सही फ़ाइल मौजूद है तो मैं वर्तमान फ़ोल्डर को एक चर में सेट करना चाहता हूं ताकि मैं पथ की प्रतिलिपि बना सकूं और इस फ़ोल्डर की प्रतिलिपि बनाएँ ...

ठीक है तो मुख्य समस्या शेष फ़ाइलों को .inf के समान फ़ोल्डर पर प्रतिलिपि बनाना है ... कृपया मदद करें!

Thnak आपको बहुत बहुत

उत्तर

52

वर्तमान निर्देशिका "छाया" चर सीडी में है।
आप की कोशिश कर सकते

set "var=%cd%" 
+0

धन्यवाद, यह काम किया !! हालांकि मैं फ़ोल्डर्स और उपफोल्डर्स के अंदर कैसे मिलता हूं और प्रत्येक स्तर पर वह एक चर को% cd% में जोड़ता है .. इसलिए परिवर्तनीय में प्राप्त होने वाला प्रत्येक फ़ोल्डर वर्तमान पथ होगा .. – massaki

10
%~dp0 

यह वर्तमान में चल रहे बैच फ़ाइल की ड्राइव & पथ में फैलता है। मैं आमतौर पर की तरह कुछ के साथ मेरी बैच फ़ाइलों के चारों ओर:

@echo off 
pushd %~dp0 

... 

popd 

संपादित: ऐसा लगता है मैं ओपी समझ में नहीं आया। मेरा उदाहरण वर्तमान में चल रही स्क्रिप्ट का स्थान प्राप्त करता है, न कि "वर्तमान निर्देशिका"। जेब करने के लिए +1।

+0

% ~ dp0 वर्तमान हो सकता है स्थान, लेकिन केवल तभी जब बैच फ़ाइल वर्तमान निर्देशिका में है। लेकिन आपका जवाब उपयोगी है, क्योंकि अक्सर यह आवश्यकता होती है क्योंकि – jeb

+0

क्षमा करें, मैं cmd ​​पर echo %% ~ dp0 टाइप करने का प्रयास करता हूं और मुझे% ~ dp0 ... – massaki

+1

@massaki मिलता है: यह कमांड प्रॉम्प्ट से काम नहीं करता है; यह केवल बैच फ़ाइलों में काम करता है। '% dp0' बैच फ़ाइल के 0'th तर्क का ड्राइव और पथ है, जो बैच फ़ाइल का पूरा पथ है। – tenfour

2

मुझे लगता है कि यहां थोड़ा भ्रम है। % सीडी% में हमेशा मौजूदा निर्देशिका होती है, इसलिए आपको इसे रखने के लिए कुछ भी जोड़ने की आवश्यकता नहीं है। हालांकि, अपने मूल प्रश्न को फिर से पढ़कर, मुझे लगता है कि आपको वर्तमान निर्देशिका के अंतिम भाग की आवश्यकता है, यानी, पिछले सभी स्थानों को छोड़कर वर्तमान स्थान का नाम। यदि ऐसा है, तो आप इसका उपयोग कर सकते हैं:

set i=0 
:nextdir 
set /a i+=1 
for /f "tokens=%i% delims=\" %%a in ("%CD%") do if not "%%a" == "" set lastdir=%%a& goto nextdir 
echo Current location: %lastdir% 
+0

मुझे एहसास है कि यह बहुत पुराना है, लेकिन सिर्फ आपको यह त्रुटियों के बारे में बताना चाहता था: delims = \ "इस समय अप्रत्याशित था। –

संबंधित मुद्दे