Come posso ottenere un elenco di lettere di unità e le loro etichette associate su un sistema Windows tramite un file bat?
Come posso ottenere un elenco di lettere di unità e le loro etichette associate su un sistema Windows tramite un file bat?
Risposte:
Questo otterrà la maggior parte:
Net Use
Se hai delle unità mappate tramite subst dovresti anche ottenere quelle:
Subst
Per completezza, lo faresti in questo modo in Powershell (se sei su Windows 7 o lo hai installato):
gwmi win32_LogicalDisk -filter DriveType=4
Puoi anche farlo dal prompt dei comandi o da un file batch usando WMI in questo modo:
wmic logicaldisk get caption,providername,drivetype,volumename
Per utilizzare diskpart, non è necessario creare un file intermedio. Provare:
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
Veloce, flessibile ed efficiente. Anche se un po 'complesso.
ispirato da 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
mostra anche la lettera dell'unità CD. non c'è bisogno di essere admin.
mountvol
uscita campione
\\?\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:\
Se qualcuno è abbastanza fortunato da usare Vista (Vista Ultimate SP2 b6002, nel mio caso) e i frammenti gwmi e wmic forniti qui non funzionano esattamente, ecco cosa ho fatto per farlo funzionare.
Per gwmi , se non si riceve alcun output, provare a cambiare DriveType in 3. Se i problemi persistono, rimuovere del tutto l'opzione -filter e analizzare l'output.
gwmi win32_LogicalDisk -filter DriveType=3
Per wmic , se ricevi "Espressione GET non valida", prova a inserire l' espressione get tra virgolette:
wmic logicaldisk get "caption,providername,drivetype,volumename"
Questo sito ha un set di chiamate molto più semplice:
http://en.code-bude.net/2013/02/23/show-all-drives-in-command-prompt/
Mostra unità locali:
wmic logicaldisk get deviceid, volumename, descrizione
Se si desidera mostrare solo unità di un determinato tipo, il comando wmic può essere ulteriormente espanso per includere una clausola where.
wmic logicaldisk dove drivetype = 2 ottiene deviceid, nome volum, descrizione
tipi
0 => Sconosciuto
1 => Nessuna directory principale
2 => Disco rimovibile
3 => Disco locale
4 => Unità di rete
5 => Compact Disc
6 => Disco RAM
@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"
Ho scoperto che l'approccio diskpart riporta unità DVD senza disco inserito e non riporta schede SD con volumi di unità validi
Un po 'kludgy, ma funziona da un file batch:
echo LIST VOLUME > temp.txt && diskpart /s temp.txt && del /q temp.txt
Sebbene abbia una risposta sufficiente, vorrei aggiungerne uno quando si desidera utilizzarlo nel file batch. Se ottieni "Espressione GET non valida", puoi inserire un ^ prima di ",", come di seguito:
for /F "usebackq tokens=1,2,3,4 " %%i in (`wmic logicaldisk get caption^,providername^,drivetype^,volumename 2^>NUL`) do echo %%i %%l
^
qui?
@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