it-swarm.com.de

Wie erhalte ich eine Liste von Laufwerksbuchstaben auf einem System über eine Windows-Shell (bat, cmd)?

Wie erhalte ich eine Liste der Laufwerksbuchstaben und der zugehörigen Beschriftungen auf einem Windows-System über eine Bat-Datei?

26
Chris Magnuson

Dies wird das meiste davon bekommen:

Net Use

Wenn Sie Laufwerke haben, die über Subst zugeordnet sind, müssen Sie auch diese abrufen:

Subst

Der Vollständigkeit halber würden Sie dies in Powershell folgendermaßen tun (wenn Sie unter Windows 7 arbeiten oder es installiert haben):

gwmi win32_LogicalDisk -filter DriveType=4

Sie können dies auch über den Befehl Eingabeaufforderung oder eine Batchdatei mit WMI wie folgt tun:

wmic logicaldisk get caption,providername,drivetype,volumename
37
EBGreen

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

echo list volume | diskpart
15
gnoise
@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,%%[email protected]"
   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.

10
Dharma Leonardi

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. Sie müssen kein Administrator sein.

7
Yuning
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:\
5
Jader Dias

Wenn jemand das Glück hat , Vista (in meinem Fall Vista Ultimate SP2 b6002) und gwmi und - zu verwenden wmic Die hier angegebenen Schnipsel funktionieren nicht genau. Hier ist, was ich getan habe, damit es funktioniert.

Wenn Sie für gwmi keine Ausgabe erhalten, ändern Sie den DriveType auf 3. Wenn weiterhin Probleme auftreten, entfernen Sie die Option -filter vollständig und analysieren Sie die Ausgabe.

gwmi win32_LogicalDisk -filter DriveType=3

Wenn Sie für wmic "Ungültiger GET-Ausdruck" erhalten, versuchen Sie, den Ausdruck get in Anführungszeichen zu setzen:

wmic logicaldisk get "caption,providername,drivetype,volumename"
4
tdowg1
@echo off
echo list volume > scriptdiskpart
diskpart/s scriptdiskpart
del scriptdiskpart
pause
2
5d4gd

Diese Seite hat eine viel einfachere Reihe von Anrufen:

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

Lokale Laufwerke anzeigen:

wmic staticdisk get deviceid, volumename, description


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

wmic staticdisk wobei drivetype = 2 deviceid, volumename, description erhalten

Typen

0 => Unbekannt

1 => Kein Stammverzeichnis

2 => Wechseldatenträger

3 => Lokale Festplatte

4 => Netzwerklaufwerk

5 => CD

6 => RAM Disk

2
David Tr
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
pbies
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 Disc und keine SD-Karten mit gültigen Laufwerksvolumes meldet

1
Nick

Etwas klobig, funktioniert aber aus einer Batch-Datei:

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

Obwohl es genügend Antworten gibt, möchte ich eine hinzufügen, wenn Sie sie in einer Batch-Datei verwenden möchten. Wenn Sie "Ungültiger GET-Ausdruck" erhalten, können Sie wie folgt ein ^ vor das ',' setzen:

for /F "usebackq tokens=1,2,3,4 " %%i in (`wmic logicaldisk get caption^,providername^,drivetype^,volumename 2^>NUL`) do echo %%i %%l
0
Mingjiang Shi