मुझे पता है कि %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