Arbeitet man mit der Kommandozeile und möchte zum Beispiel Dateien auf einen USB-Stick kopieren, so hat man ein Problem. Denn wie zeigt man eigentlich alle Laufwerke in der Kommadozeile (CMD) von Windows an? Ohne eine Übersicht aller Laufwerke fehlt auch die Kenntnis über den Laufwerksbuchstaben des USB-Sticks und ohne diesen fällt auch der Zugriff auf den Stick schwer.
[atkp_list id=’7163′ template=’7130′][/atkp_list]Einen Befehl um alle Laufwerke aufzulisten bietet die CMD selbst nicht. Jedoch kann man sich mit dem Kommandozeilenprogramm wmic behelfen, welches den Zugriff auf die WMI-Klassen per Kommandozeile bietet. Und so ist die Lösung auf die Frage doch ganz einfach.Um alle Laufwerke in der CMD anzuzeigen reicht folgender Befehl:
wmic logicaldisk get deviceid, volumename, description
Laufwerke nach Typ filtern
Möchte man nicht alle, sondern nur Laufwerke eines bestimmten Typs anzeigen, so kann der wmic Befehl noch um eine where-Klausel erweitert werden.
wmic logicaldisk where drivetype=2 get deviceid, volumename, description
Der obige Befehl zeigt zum Beispiel alle Wechseldatenträger an. Um einen anderen Laufwerkstyp zu wählen, muss statt der 2 ein entsprechender anderer Wert gewählt werden. Eine Übersicht der Werte findet ihr nachfolgend:
- 0 => Unknown
- 1 => No Root Directory
- 2 => Removable Disk
- 3 => Local Disk
- 4 => Network Drive
- 5 => Compact Disc
- 6 => RAM Disk
Wer mehr oder ausgiebigere Infos braucht, kann sich hier einlesen oder in das am Anfang des Beitrags verlinkte Buch schauen.
Between me and my husband we’ve owned more MP3 players over the years than I can count, including Sansas, iRivers, iPods (classic & touch), the Ibiza Rhapsody, etc. But, the last few years I’ve settled down to one line of players. Why? Because I was happy to discover how well-designed and fun to use the underappreciated (and widely mocked) Zunes are.
Super hilfreich! Schade nur, dass Handys nicht als USB-Datenträger erkannt werden – bei mir werden gar keine angeschlossenen Wechselmedien erkannt.
Wenn ich mit robocopy auf die zugreifen könnte, ginge das halt deutlich schneller als über die Windows-Kopierfunktion. Aber dazu müssten sie ja erst mal erkannt werden.
Hat vermutlich mit der Formatierung zu tun?
USB-Laufwerke werden nicht immer als Wechseldatenträger erkennt, daher habe ich es wie folgt versucht zu lösen:
NUL
setLocal enableExtensions DisableDelayedExpansion
if errorLevel 1 goTo:NoExt
echo.
title Bilder auslesen und Texterkennung starten
call:NoUSB_Drv
for /F “tokens=1,2 delims==” %%a in (‘
wmic diskdrive where “interfacetype=’USB'” get Index^, Model^, FirmwareRevision^,Partitions^,Signature^ /Value
‘) do call:GetUSBDrv “%%a” “%%b”
exit /b 0
:GetUSBDrv
set “OB=” :: OutputBlocking
echo.%~1|find “FirmwareRevision”>nul && set Firmware=%~2 && set “OB=FR”
echo.%~1|find “Index”>nul && set Index=%~2 && set “OB=I”
echo.%~1|find “Model”>nul && set Model=%~2 && set “OB=M”
echo.%~1|find “Partitions”>nul && set Partitions=%~2 && set “OB=P”
if not defined OB (
if defined Model (
echo. Model-Name: %Model%
echo. Firmware: %Firmware%
echo.%Partitions%|find “0”>NUL && echo. – Kein Datenträger erkannt -||(^
Call:GetPartitions %Index%)
echo.
call:NoUSB_Drv
))
goTo:EoF
:NoUSB_Drv
set “Firmware=”
set “Index=”
set “Model=”
set “Partitions=”
goTo:EoF
:GetPartitions
set “DiskDrive=%1″
for /F tokens^=2^,3^ delims^=^,^” %%a in (‘
wmic partition where “DiskIndex=%1” assoc /assocclass:Win32_LogicalDiskToPartition 2^>NUL
‘) do call:GetDriveLetter “%%a” “%%b”
goTo:EoF
:GetDriveLetter
echo.%2|find “#”>nul && for /F tokens^=2^ delims^=^# %%a in (‘
echo.%~2
‘) do set “Partition=%%a”
echo.%1|find “:”>nul && set “Laufwerk=%~1”
echo.%1|find “:”>nul && echo. Laufwerk: %~1 (%DiskDrive%,%Partition: =%)
goTo:EoF
:NoExt
echo.
echo. SORRY: Keine Extensions Unterstützung.
echo. Dieses Script läuft auf Deinem System nicht!
echo.
pause
exit /b 1
OH ÜBEL … da fehlt ja der Anfang!
… wie kann ich den ganzen Code hier posten ohne das die spitzen Klammern interpretiert werden? Und der Text orginal im vollständigen 850 Text-Coding erscheint?
Die Ausgabe von meinem Programm enthält übrigens auch Leerzeichen und sieht so aus:
Model-Name: SCANNER USB Device
Firmware: 0.20
Laufwerk: K: (6,0)
Model-Name: ASMT 2105 USB Device
Firmware: 0
– Kein Datenträger erkannt –
Model-Name: JMicron Generic DISK00 USB Device
Firmware: 0103
Laufwerk: F: (2,0)
Laufwerk: H: (2,1)
Laufwerk: I: (2,2)
Model-Name: JMicron Generic DISK01 USB Device
Firmware: 0103
Laufwerk: E: (3,0)
Model-Name: Kingston DataTraveler 2.0 USB Device
Firmware: PMAP
Laufwerk: J: (5,0)
Vielen Dank für diese Information. Die Lösung mit wmic wäre super für mich,
allerdings benötige ich das Ergebnis (Laufwerke) in einer reinen Textdatei. Mit dem “>” erreiche ich dies zwar, aber die generierte Date ist keine reine Textdatei und sie hat Leerzeichen. Das kann ich in meiner eigenen defragmetierung.cmd nicht brauchen.
Kennen Sie eine Möglichkeit die Laufwerksbuchstaben des PC`s in eine Editor-Datei zu schreiben? Vielen Dank und Gruss aus dem Allgäu, Bruno Frick
Hallo Bruno,
Du könntest die Textdatei ja hinterher noch auf aufräumen. Z.B. die Leerzeichen, wie hier gezeigt, ersetzen: https://stackoverflow.com/questions/44207946/remove-spaces-in-batch-variable