Das Benennen eines Volumes unterscheidet sich von dem Benennen von Dateien, Pfaden und Namespaces .
Das nächste Skript zeigt einen möglichen Ansatz, wie der Laufwerksbuchstabe einem Volume zugewiesen wird . Verwendet die Klasse Win32_Volume :
Die
Win32_Volume
Klasse repräsentiert einen Speicherbereich auf einer Festplatte. Die Klasse gibt lokale Volumes zurück, die formatiert, nicht formatiert, gemountet oder offline sind. Ein Volume wird mit einem Dateisystem wieFAT
oder formatiertNTFS
und kann einen Laufwerksbuchstaben haben. Eine Festplatte kann mehrere Datenträger haben, und Datenträger können sich auf mehrere physische Datenträger erstrecken. DieWin32_Volume
Klasse unterstützt keine Plattenlaufwerksverwaltung.
@ECHO OFF SETLOCAL EnableExtensions DisableDelayedExpansion call :getDriveLetter "\\?\Volume\" call :getDriveLetter "\\?\Volume\" call :getDriveLetter "\\?\Volume\" :endlocal ENDLOCAL goto :eof :getDriveLetter set "_volumeID=%~1" set "_DriveLetter=" for /F "tokens=1,* delims==" %%G in (' wmic volume where "DeviceID='%_volumeID:\=\\%'" get DriveLetter /value ') do for /F %%g in ("%%~H") do set "_%%~G=%%~g" call :doSomething goto :eof :doSomething rem only output for debugging if defined _DriveLetter ( echo %_volumeID% DriveLetter %_DriveLetter% ) else ( echo %_volumeID% DriveLetter unknown ) goto :eof
Ausgabe :
d:\temp> D:\bat\SU\1163592.bat \\?\Volume\ DriveLetter F: \\?\Volume\ DriveLetter unknown \\?\Volume\ DriveLetter E: