Frage Wie bekomme ich eine Liste von Laufwerksbuchstaben auf einem System durch eine Windows-Shell (bat, cmd)?


Wie erhalte ich eine Liste der Laufwerksbuchstaben und ihrer zugeordneten Bezeichnungen auf einem Windows-System durch eine bat-Datei?


23
2017-09-04 20:46


Ursprung




Antworten:


Dies wird das meiste davon bekommen:

Net Use

Wenn Sie Laufwerke über Subst zugeordnet haben, müssen Sie auch diese erhalten:

Subst

Der Vollständigkeit halber würden Sie dies in Powershell tun (wenn Sie Windows 7 verwenden oder es installiert haben):

gwmi win32_LogicalDisk -filter DriveType=4

Sie können dies auch über die Eingabeaufforderung oder eine Batch-Datei mit WMI wie folgt tun:

wmic logicaldisk get caption,providername,drivetype,volumename

34
2017-09-04 20:51



Dies listet keine lokalen Festplatten wie interne Festplatten oder Festplatten auf. Fehle ich etwas? - Chris Magnuson
Nein, ich habe die Frage missverstanden. Ich dachte, du wolltest nur gemappte Laufwerke. Ich werde bearbeiten. - EBGreen
Die wmic Lösung sollte dir alles geben. - EBGreen
Sie müssen die Anführungszeichen von wmic logicaldisk entfernen, um "caption, providername, drivetype" zu erhalten, so dass es wmic logicaldisk get caption, providername, drivetype ist, ansonsten wird ein Fehler ausgegeben. EBGreen, du hast mir im Alleingang den Kopf für den Tag geweht, ich habe wmic nie gesehen, obwohl ich seit Wochen verschiedene Server-Builds geschrieben habe und ich bin sehr aufgeregt zu sehen, was ich damit noch alles machen kann. Gut gemacht! - Chris Magnuson
wmic logicaldisk bekomme caption, providername, drivetype, volumenname der VolumeName war was ich vermisste, wenn du deine aktualisiere, werde ich sie als antwort akzeptieren. Vielen Dank - Chris Magnuson


Um diskpart zu verwenden, muss keine Zwischendatei erstellt werden. Versuchen:

echo list volume | diskpart

15
2017-12-05 15:41



Dies ist die beste Antwort und gibt die meisten Informationen über die gemounteten Laufwerke in einem schönen Format zurück. - ekerner
aber es erfordert Admin-Rechte - LogicDaemon


@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

Schnell, flexibel und effizient. Obwohl ein wenig komplex.


9
2018-05-11 23:55



Ich weiß nicht, welche Versionen von Windows dies funktioniert, aber ich habe es gerade auf meinen Win 7 und XP Maschinen getestet und habe die folgende Ausgabe von beiden: `DRIVE LETTER (s): USED:" = "DRIVE LETTER (s): KOSTENLOS: "! TMP_FREE_DRIVE_LETTERS!" ` - John Gardeniers
Entschuldigung, Sie müssen dies an den Anfang der Batch-Datei setzen. setlocal aktiviertdelayexpansion - Dharma Leonardi
Ich habe Ihre Antwort bearbeitet, um die fehlende Zeile einzuschließen. Es funktioniert jetzt. +1 - John Gardeniers


inspiriert von 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

zeigt auch CD-Laufwerksbuchstaben. Keine Notwendigkeit, Admin zu sein.


7
2017-09-14 03:58



einfach und funktioniert - Tyler Long
"Ich war zu dieser Zeit unerwartet." - Berit Larsen
@BeritLarsen Sie müssen% -Symbole verdoppeln, wenn Sie es als Batchdatei und nicht in der Befehlszeile ausführen. - TessellatingHeckler


Wenn jemand ist Glücklich genug, um Vista (Vista Ultimate SP2 b6002, in meinem Fall) und die gwmi und wmic die hier gegebenen Schnipsel funktionieren nicht genau, hier ist, was ich getan habe, damit es funktioniert.

Zum gwmiWenn Sie keine Ausgabe erhalten, versuchen Sie, den DriveType auf 3 zu ändern. Wenn weiterhin Probleme auftreten, entfernen Sie die Option -filter vollständig und analysieren Sie die Ausgabe.

gwmi win32_LogicalDisk -filter DriveType=3

Zum wmicWenn Sie "Invalid GET Expression" erhalten, versuchen Sie es mit dem erhalten Ausdruck in Anführungszeichen:

wmic logicaldisk get "caption,providername,drivetype,volumename"

4
2017-07-24 03:19





mountvol

Beispielausgabe

\\?\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:\

4
2017-08-17 17:59





Diese Website hat eine viel einfachere Reihe von Anrufen:

http://de.code-bude.net/2013/02/23/show-all-drives-in-command-prompt/

Lokale Laufwerke anzeigen:

wmic logicaldisk erhält DeviceID, VolumeName, Beschreibung


Wenn Sie nur Laufwerke eines bestimmten Typs anzeigen möchten, kann der Befehl wmic um eine where-Klausel erweitert werden.

wmic logicaldisk wobei drivetype = 2 geratedid, volumenname, description

Typen

0 => Unbekannt

1 => Kein Stammverzeichnis

2 => Wechseldatenträger

3 => Lokaler Datenträger

4 => Netzwerklaufwerk

5 => CD

6 => RAM-Disk


2
2017-11-07 16:46





@echo off
echo list volume > scriptdiskpart
diskpart/s scriptdiskpart
del scriptdiskpart
pause

2
2017-12-18 22:14



Ich habe es versucht und es hat nicht funktioniert. Ich denke, es muss ein Platz vor den / s sein, aber selbst mit dieser Änderung hat es nicht funktioniert. Ich lege das Obige in eine Datei, d.bat, und ich sehe, dass das diskpart-Fenster aufleuchtet, aber dann verschwindet und die cmd-Shell, in der ich das ausführe, zeigt dann, dass die Pause läuft. - slm


for %%p 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 if exist %%p:\nul your_command_and_parameters_here

1
2018-05-19 17:55





Etwas kludig, funktioniert aber aus einer Batch-Datei:

echo LIST VOLUME > temp.txt && diskpart /s temp.txt && del /q temp.txt

0
2017-09-10 05:52





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"

Ich habe festgestellt, dass der Diskpart-Ansatz DVD-Laufwerke ohne eingelegte Disk meldet und keine SD-Karten mit gültigen Laufwerksvolumes meldet


0
2017-12-20 16:44



funktioniert nicht für Windows XP - Tyler Long