Bagaimana cara saya mendapatkan daftar huruf drive dan label terkait pada sistem windows melalui file bat?
Bagaimana cara saya mendapatkan daftar huruf drive dan label terkait pada sistem windows melalui file bat?
Jawaban:
Ini akan mendapatkan sebagian besar dari itu:
Net Use
Jika Anda memiliki drive yang dipetakan melalui subst, Anda juga perlu mendapatkannya:
Subst
Untuk kelengkapan, Anda akan melakukannya seperti ini di Powershell (jika Anda berada di windows 7 atau telah menginstalnya):
gwmi win32_LogicalDisk -filter DriveType=4
Anda juga dapat melakukannya dari prompt perintah atau file batch menggunakan WMI seperti ini:
wmic logicaldisk get caption,providername,drivetype,volumename
Untuk menggunakan diskpart, tidak perlu membuat file perantara. Mencoba:
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
Cepat, fleksibel, dan efisien. Meski sedikit rumit.
terinspirasi oleh Scott
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
juga menunjukkan huruf drive CD. tidak perlu menjadi admin.
mountvol
output sampel
\\?\Volume{11197e59-f977-11dd-afc6-111e6f6e6963}\
*** NO MOUNTING POINT ***
\\?\Volume{11197e59-f977-11dd-afc6-111e6f6e6963}\
D:\
\\?\Volume{11197e59-f977-11dd-afc6-111e6f6e6963}\
C:\
\\?\Volume{11197e59-f977-11dd-afc6-111e6f6e6963}\
E:\
Jika ada orang yang cukup beruntung menggunakan Vista (Vista Ultimate SP2 b6002, dalam kasus saya) dan potongan gwmi dan wmic yang diberikan di sini tidak bekerja dengan tepat, inilah yang saya lakukan untuk membuatnya bekerja.
Untuk gwmi , jika Anda tidak menerima output, coba ubah DriveType ke 3. Jika masih mengalami masalah, hapus opsi -filter sekaligus dan analisis output.
gwmi win32_LogicalDisk -filter DriveType=3
Untuk wmic , jika Anda menerima "Ekspresi GET Tidak Valid", cobalah menempatkan ekspresi get dalam tanda kutip:
wmic logicaldisk get "caption,providername,drivetype,volumename"
Situs ini memiliki serangkaian panggilan yang lebih sederhana:
http://en.code-bude.net/2013/02/23/show-all-drives-in-command-prompt/
Tampilkan drive lokal:
wmic logicaldisk dapatkan deviceid, volumename, description
Jika Anda hanya ingin menunjukkan drive dari jenis tertentu, perintah wmic dapat diperluas lebih lanjut untuk menyertakan klausa where.
wmic logicaldisk di mana drivetype = 2 dapatkan deviceid, volumename, description
Jenis
0 => Tidak Dikenal
1 => Tidak Ada Direktori Root
2 => Removable Disk
3 => Disk Lokal
4 => Drive Jaringan
5 => Compact Disc
6 => RAM Disk
@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"
Saya menemukan pendekatan pendekatan diskpart melaporkan drive DVD tanpa disk dimasukkan, dan tidak melaporkan kartu SD dengan volume drive yang valid
Agak kotor, tetapi bekerja dari file batch:
echo LIST VOLUME > temp.txt && diskpart /s temp.txt && del /q temp.txt
Meskipun memiliki jawaban yang cukup, saya ingin menambahkannya ketika Anda ingin menggunakannya dalam file batch. Jika Anda mendapatkan "Ekspresi GET Tidak Valid", Anda dapat meletakkan tanda ^ di depan tanda ',', seperti di bawah ini:
for /F "usebackq tokens=1,2,3,4 " %%i in (`wmic logicaldisk get caption^,providername^,drivetype^,volumename 2^>NUL`) do echo %%i %%l
^
dilakukan di sini?
@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