मुझे पता है कि %0बैच स्क्रिप्ट का पूरा पथ शामिल है, उदाहरण के लिएc:\path\to\my\file\abc.bat
मैं pathबराबर होगाc:\path\to\my\file
मैं इसे कैसे हासिल कर सकता हूं?
मुझे पता है कि %0बैच स्क्रिप्ट का पूरा पथ शामिल है, उदाहरण के लिएc:\path\to\my\file\abc.bat
मैं pathबराबर होगाc:\path\to\my\file
मैं इसे कैसे हासिल कर सकता हूं?
जवाबों:
%~dp0निर्देशिका होगी। यहाँ सभी पथ प्रदर्शकों पर कुछ प्रलेखन है । मजेदार चीजें :-)
अंतिम बैकस्लैश को हटाने के लिए, आप :n,mसब्स्ट्रिंग सिंटैक्स का उपयोग कर सकते हैं , जैसे:
SET mypath=%~dp0
echo %mypath:~0,-1%
मुझे विश्वास नहीं है कि %0वाक्यविन्यास के साथ वाक्यविन्यास को संयोजित करने का एक तरीका है :~n,m, दुर्भाग्य से।
%~0\..- जानता था कि एक बेहतर तरीका होना चाहिए! इसके अलावा, आप संभवतः %~dp0दोहरे उद्धरण चिह्नों ( "") के मामले में निर्देशिका नाम में रिक्त स्थान, इत्यादि संलग्न करना चाहते हैं
%~dp0अंत में `` शामिल हैं। क्या आपको अंदाजा है कि इसे कैसे हटाया जाए?
SET msg=hello worldठीक काम करता है)। हालाँकि,% mypath% का कहीं और उपयोग करते समय आप इसे उद्धरणों में उपयोग करने के लिए सावधान रहना चाहते हैं, हालाँकि इनकी आवश्यकता cdभी नहीं है।
"\" अनुगामी के बिना पथ प्राप्त करने के लिए आप निम्न स्क्रिप्ट का उपयोग कर सकते हैं
for %%i in ("%~dp0.") do SET "mypath=%%~fi"
%~dp0एक सापेक्ष मार्ग हो सकता है। इसे पूर्ण पथ में बदलने के लिए, कुछ इस तरह आज़माएँ:
pushd %~dp0
set script_dir=%CD%
popd
%~dp0सीधे उपयोग क्यों नहीं ?
%~dp0सापेक्ष हो सकता है, जो उपयोग के मामले के आधार पर समस्या हो सकती है या नहीं भी हो सकती है
%~dp0एक सापेक्ष पथ नहीं हो सकता है, dड्राइव के लिए खड़ा है और pपथ के लिए, एक ड्राइव कैसे सापेक्ष हो सकता है?
%~dp0कि स्क्रिप्ट के सापेक्ष पथ के रूप में चलने पर भी यह एक निरपेक्ष पथ होगा। जेब की टिप्पणी के लिए धन्यवाद, मैं इस जवाब से मूर्ख नहीं था। लोग सिर्फ सामान क्यों बनाते हैं और जाते हैं और दूसरों को अपनी जंगली कल्पना फैलाना शुरू करते हैं। मेरे पास यह सहयोगी है जो ऐसा करता है, लेकिन मैंने उसकी (युवा) उम्र को दोषी ठहराया। काश मेरा डाउन-वोट गिना जाता।
आप उपयोग कर सकते हैं %~dp0 , डी का मतलब केवल ड्राइव है, पी का मतलब केवल पथ है, 0 बैच फ़ाइल के पूर्ण फ़ाइल नाम के लिए तर्क है।
उदाहरण के लिए यदि फ़ाइल पथ C: \ Users \ Oliver \ Desktop \ example.bat था, तो तर्क C: \ Users \ Oliver \ Desktop \ के बराबर होगा, साथ ही आप आदेश set cpath=%~dp0 && set cpath=%cpath:~0,-1%का उपयोग कर सकते हैं और %cpath%अनुगामी स्लैश को हटाने के लिए चर का उपयोग कर सकते हैं ।
%cd% आपको निर्देशिका का रास्ता देगा जहां से स्क्रिप्ट चल रही है।
बस दौडो:
echo %cd%
%CD%वर्तमान कार्यशील फ़ोल्डर है, फ़ोल्डर नहीं, जहां बैच फ़ाइल संग्रहीत है। वे एक ही स्थान हो सकते हैं, लेकिन अक्सर वे नहीं होते हैं।
वह %CD%परिवर्तनशील होगा।
@echo off
echo %CD%
%CD% वर्तमान निर्देशिका बैच स्क्रिप्ट में है।
CD C:\Temp <CR> ECHO %CD%( <CR>newline है ...)
मैं एक विंडोज 7 मशीन पर काम कर रहा हूं और मैंने अपनी बैश स्क्रिप्ट के लिए पूर्ण फ़ोल्डर पथ प्राप्त करने के लिए नीचे की पंक्तियों का उपयोग किया है।
Http://www.linuxjournal.com/content/bash-parameter-expansion को देखने के बाद मुझे इसका समाधान मिला ।
#Get the full aboslute filename.
filename=$0
#Remove everything after \. An extra \ seems to be necessary to escape something...
folder="${filename%\\*}"
#Echo...
echo $filename
echo $folder