विंडोज़ बैच में दिए गए फ़ाइल का ड्राइव अक्षर


3

मैं एक स्क्रिप्ट लिख रहा हूं, जहां मुझे एक पैरामीटर के रूप में एक फ़ाइल नाम मिलेगा। फाइल निरपेक्ष होगी। (आदर्श रूप से समाधान रिश्तेदार फ़ाइलों का भी समर्थन करेगा, लेकिन मैं पूर्ण-केवल के साथ रह सकता हूं) यह अज्ञात है अगर फ़ाइल पहले से मौजूद है।

मैं फ़ाइल का ड्राइव अक्षर प्राप्त करना चाहता हूं।

उदाहरण:

myScript.bat C:\exampleFolder\somefile.txt D:\someOtherFolder\differentfile.txt

myScript.bat:

echo First argument: %1
echo Second argument: %2
REM Its the next line I have trouble with.
echo Drive letter of second argument: %MAGIC%2

अपेक्षित उत्पादन:

First argument: C:\exampleFolder\somefile.txt
Second argument: D:\someOtherFolder\differentfile.txt
Drive letter of second argument: D:

संदर्भ: मैं एक स्क्रिप्ट लिखना चाहता हूं जो कुछ फ़ाइल कॉपी करता है। लेकिन फ़ाइल एक ही बार में लक्ष्य गंतव्य पर दिखाई दे सकती है। जैसे ही इसका बनाया गया यह पहले से ही पूरा होना चाहिए। इसलिए मैं एक स्क्रिप्ट लिखना चाहता हूं जो फ़ाइल को कॉपी करती है TARGET_DRIVE\tmp और फिर इसे गंतव्य पर ले जाएं।

मैंने ड्राइव पत्र को तीसरे तर्क के रूप में पारित करने के बारे में सोचा। लेकिन वह बोझिल लगता है।

जवाबों:


1

मैं दूसरे तर्क में फ़ाइल का ड्राइव अक्षर प्राप्त करना चाहता हूं

उपयोग %~d2

myScript.bat:

@echo off
echo First argument: %1
echo Second argument: %2
echo Drive letter of second argument: %~d2

उदाहरण आउटपुट:

F:\test>myScript C:\exampleFolder\somefile.txt D:\someOtherFolder\differentfile.txt
First argument: C:\exampleFolder\somefile.txt
Second argument: D:\someOtherFolder\differentfile.txt
Drive letter of second argument: D:

F:\test>

पैरामीटर एक्सटेंशन

जब एक तर्क का उपयोग फ़ाइल नाम की आपूर्ति के लिए किया जाता है तो निम्नलिखित   विस्तारित सिंटैक्स लागू किया जा सकता है:

हम चर 1 का उपयोग कर रहे हैं (लेकिन यह किसी भी पैरामीटर के लिए काम करता है)

% ~ f1 पूरी तरह से योग्य पथ नाम के लिए% 1 का विस्तार करें - C: \ utils \ MyFile.txt

% ~ d1 केवल ड्राइव अक्षर पर% 1 ​​का विस्तार करें - C:

% ~ p1 पथ 1 पर% 1 ​​का विस्तार करें \ utils \ इसमें एक अनुगामी \ _ शामिल होता है, जिसे कुछ आदेशों द्वारा भागने के चरित्र के रूप में व्याख्या किया जाएगा।

% ~ n1 फ़ाइल एक्सटेंशन के बिना% 1 का विस्तार करें 1 फ़ाइल के नाम के बिना C: \ utils \ MyFile या यदि केवल एक पथ मौजूद है (कोई अनुगामी बैकस्लैश के साथ) - उस पथ का अंतिम फ़ोल्डर

% ~ X1 फाइल एक्सटैंशन के लिए% 1 का विस्तार केवल - .xt पर करें

% ~ s1 लघु 8.3 नाम (यदि यह मौजूद है) को संदर्भित करने के लिए f, n, s और x का अर्थ बदलें।

% ~ 1 किसी भी आसपास के उद्धरण को हटाकर% 1 का विस्तार करें (")

% ~ a1% 1 की फ़ाइल विशेषताएँ प्रदर्शित करें

% ~ t1% 1 की तारीख / समय प्रदर्शित करें

% ~ z1% 1 की फ़ाइल का आकार प्रदर्शित करें

% ~ $ PATH: 1 PATH पर्यावरण वैरिएबल को खोजें और पाए गए पहले मैच के पूर्ण योग्य नाम के लिए% 1 का विस्तार करें।

उपरोक्त संशोधक संयुक्त हो सकते हैं:

% ~ dp1 एक ड्राइव अक्षर और पथ पर% 1 ​​का विस्तार करें

% ~ sp1 8.3 वर्णों को छोटा करने के लिए% 1 का विस्तार करें

% ~ nx2 एक फ़ाइल नाम और विस्तार के लिए% 2 का विस्तार करें

स्रोत मापदंडों


आगे की पढाई


मैं बृहदान्त्र बंद कैसे कर सकता हूँ?
Константин Ван

1
@ K._ निम्नलिखित दो लाइनें जोड़ें: set _l=%~d2 के बाद echo %_l:~0,1%
DavidPostill
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.