मुझे एक बैट फाइल के माध्यम से विंडोज़ सिस्टम पर ड्राइव अक्षर और उनके संबंधित लेबल की सूची कैसे मिल सकती है?
मुझे एक बैट फाइल के माध्यम से विंडोज़ सिस्टम पर ड्राइव अक्षर और उनके संबंधित लेबल की सूची कैसे मिल सकती है?
जवाबों:
यह इसे सबसे अधिक मिलेगा:
Net Use
यदि आपके पास विकल्प के माध्यम से मैप की गई कोई भी ड्राइव है, तो आपको उन्हें प्राप्त करने की आवश्यकता होगी:
Subst
पूर्णता के लिए, आप इसे पॉवरशेल में ऐसा करेंगे (यदि आप विंडोज 7 पर हैं या इसे स्थापित कर चुके हैं):
gwmi win32_LogicalDisk -filter DriveType=4
आप इसे कमांड प्रॉम्प्ट या इस तरह से WMI का उपयोग करके एक बैच फ़ाइल से भी कर सकते हैं:
wmic logicaldisk get caption,providername,drivetype,volumename
डिस्कपार्ट का उपयोग करने के लिए, एक मध्यवर्ती फ़ाइल बनाने की आवश्यकता नहीं है। प्रयत्न:
echo list volume | diskpart
@echo off
cls
setlocal enabledelayedexpansion
set "_DRIVE.LETTERS.FREE=Z Y X W V U T S R Q P O N M L K J I H G F E D C B A "
for /f "skip=1 tokens=1,2 delims=: " %%a in ('wmic logicaldisk get deviceid^,volumename') do (
set "_DRIVE.LETTERS.USED=!_DRIVE.LETTERS.USED!%%a,%%b@"
set "_DRIVE.LETTERS.FREE=!_DRIVE.LETTERS.FREE:%%a =!"
)
set _DRIVE.LETTERS.USED=%_DRIVE.LETTERS.USED:~0,-2%
set _DRIVE.LETTERS.USED=%_DRIVE.LETTERS.USED:,@=, @%
set _DRIVE.LETTERS
तेज, लचीला और कुशल। हालांकि थोड़ा जटिल है।
स्कॉट से प्रेरित है
for %i in (a b c d e f g h i j k l m n o p q r s t u v w x y z) do @%i: 2>nul && set/pz=%i <nul
सीडी ड्राइव पत्र भी दिखाता है। व्यवस्थापक होने की कोई आवश्यकता नहीं है।
अगर कोई विस्टा (विस्टा अल्टिमेट SP2 b6002, मेरे मामले में) का उपयोग करने के लिए पर्याप्त भाग्यशाली है और यहां दिए गए gwmi और wmic स्निपेट्स बिल्कुल काम नहीं करते हैं, तो यहां वही है जो मैंने इसे काम करने के लिए किया था।
के लिए gwmi , अगर आप कोई उत्पादन प्राप्त करते हैं, 3. करने के लिए DriveType बदलते यदि समस्या अभी भी होने की कोशिश -Filter विकल्प पूरी तरह निकाल दें और आउटपुट का विश्लेषण।
gwmi win32_LogicalDisk -filter DriveType=3
के लिए wmic , यदि आप "अवैध प्राप्त अभिव्यक्ति" प्राप्त करते हैं, तो डाल कोशिश प्राप्त उद्धरण में अभिव्यक्ति:
wmic logicaldisk get "caption,providername,drivetype,volumename"
इस साइट पर कॉल का बहुत सरल सेट है:
http://en.code-bude.net/2013/02/23/show-all-drives-in-command-prompt/
स्थानीय ड्राइव दिखाएं:
विकर्म लॉजिकडिस्क को डिवाइसिड, वॉल्यूनेम, विवरण मिलता है
यदि आप किसी विशेष प्रकार की केवल ड्राइव दिखाना चाहते हैं, तो वर्म कमांड को आगे बढ़ाया जा सकता है जिसमें एक क्लॉज शामिल है।
विकर्म लॉजिकडिस्क जहां ड्राइवटाइप = 2 में डिवाइसिड, वॉल्यूनेम, विवरण मिलता है
प्रकार
0 => अज्ञात
1 => कोई रूट निर्देशिका नहीं
2 => हटाने योग्य डिस्क
3 => स्थानीय डिस्क
4 => नेटवर्क ड्राइव
5 => कॉम्पैक्ट डिस्क
6 => रैम डिस्क
@echo off
echo list volume > scriptdiskpart
diskpart/s scriptdiskpart
del scriptdiskpart
pause
for %a in (c: d: e: f: g: h: i: j: k: l: m: n: o: p: q: r: s: t: u: v: w: x: y: z:) do @vol %a 2>&1 | find "drive"
मैंने पाया कि डिस्कपार्ट अप्रोच डीवीडी ड्राइव को बिना किसी डिस्क के डालती है, और मान्य ड्राइव वॉल्यूम के साथ एसडी कार्ड की रिपोर्ट नहीं करती है
हालाँकि इसका पर्याप्त उत्तर है, लेकिन जब आप इसे बैच फ़ाइल में उपयोग करना चाहते हैं तो मैं इसे जोड़ना चाहूंगा। यदि आपको "अमान्य GET अभिव्यक्ति" मिलती है, तो आप नीचे दिए गए तरह ',', से पहले एक ^ डाल सकते हैं:
for /F "usebackq tokens=1,2,3,4 " %%i in (`wmic logicaldisk get caption^,providername^,drivetype^,volumename 2^>NUL`) do echo %%i %%l
^
यहाँ क्या करता है?
@ECHO OFF
IF NOT EXIST A: GOTO B
:A
VOL A:
:B
IF NOT EXIST B: GOTO C
VOL B:
:C
IF NOT EXIST C: GOTO D
VOL C:
:D
IF NOT EXIST D: GOTO E
VOL D:
:E
IF NOT EXIST E: GOTO F
VOL E:
:F
IF NOT EXIST F: GOTO G
VOL F:
:G
IF NOT EXIST G: GOTO H
VOL G:
:H
IF NOT EXIST H: GOTO I
VOL H:
:I
IF NOT EXIST I: GOTO J
VOL I:
:J
IF NOT EXIST J: GOTO K
VOL J:
:K
IF NOT EXIST K: GOTO L
VOL K:
:L
IF NOT EXIST L: GOTO M
VOL L:
:M
IF NOT EXIST M: GOTO N
VOL M:
:N
IF NOT EXIST N: GOTO O
VOL N:
:O
IF NOT EXIST O: GOTO P
VOL O:
:P
IF NOT EXIST P: GOTO Q
VOL P:
:Q
IF NOT EXIST Q: GOTO R
VOL Q:
:R
IF NOT EXIST R: GOTO S
VOL R:
:S
IF NOT EXIST S: GOTO T
VOL S:
:T
IF NOT EXIST T: GOTO U
VOL T:
:U
IF NOT EXIST U: GOTO V
VOL U:
:V
IF NOT EXIST V: GOTO W
VOL V:
:W
IF NOT EXIST w: GOTO X
VOL W:
:X
IF NOT EXIST X: GOTO Y
VOL X:
:Y
IF NOT EXIST Y: GOTO Z
VOL Y:
:Z
IF NOT EXIST Z: GOTO END
VOL Z:
:END