¿Cómo obtengo una lista de letras de unidad y sus etiquetas asociadas en un sistema Windows a través de un archivo bat?
¿Cómo obtengo una lista de letras de unidad y sus etiquetas asociadas en un sistema Windows a través de un archivo bat?
Respuestas:
Esto obtendrá la mayor parte:
Net Use
Si tiene alguna unidad asignada a través de subst, también necesitaría obtenerla:
Subst
Para completar, lo haría así en Powershell (si está en Windows 7 o lo ha instalado):
gwmi win32_LogicalDisk -filter DriveType=4
También puede hacerlo desde el símbolo del sistema o un archivo por lotes utilizando WMI de esta manera:
wmic logicaldisk get caption,providername,drivetype,volumename
Para usar diskpart, no es necesario crear un archivo intermedio. Tratar:
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
Rápido, flexible y eficiente. Aunque un poco complejo.
inspirado en 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
también muestra la letra de la unidad de CD. No es necesario ser administrador.
mountvol
salida de muestra
\\?\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:\
Si alguien tiene la suerte de estar usando Vista (Vista Ultimate SP2 b6002, en mi caso) y los fragmentos gwmi y wmic que se proporcionan aquí no funcionan exactamente, esto es lo que hice para que funcione.
Para gwmi , si no recibe salida, intente cambiar el DriveType a 3. Si todavía tiene problemas, elimine la opción -filter por completo y analice la salida.
gwmi win32_LogicalDisk -filter DriveType=3
Para wmic , si recibe "Expresión GET no válida", intente poner la expresión get entre comillas:
wmic logicaldisk get "caption,providername,drivetype,volumename"
Este sitio tiene un conjunto de llamadas mucho más simple:
http://en.code-bude.net/2013/02/23/show-all-drives-in-command-prompt/
Mostrar unidades locales:
wmic logicaldisk get deviceid, volumename, description
Si desea mostrar solo unidades de un tipo particular, el comando wmic puede expandirse aún más para incluir una cláusula where.
disco lógico wmic donde drivetype = 2 obtener deviceid, volumename, descripción
Tipos
0 => Desconocido
1 => Sin directorio raíz
2 => Disco extraíble
3 => Disco local
4 => Unidad de red
5 => Disco compacto
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"
Encontré que el enfoque diskpart informa unidades de DVD sin disco insertado, y no informa tarjetas SD con volúmenes de unidad válidos
Aunque tiene suficiente respuesta, me gustaría agregar una cuando desee usarla en un archivo por lotes. Si obtiene "Expresión GET no válida", puede poner un ^ antes de ',', como a continuación:
for /F "usebackq tokens=1,2,3,4 " %%i in (`wmic logicaldisk get caption^,providername^,drivetype^,volumename 2^>NUL`) do echo %%i %%l
^
aquí?
@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