m.fessler
Goto Top

Batch - Laufwerksbuchstaben ermitteln, findstr buchstäblich

Einen schönen guten Tag,

möchte in einer Batch den Laufwerksbuchstaben eines bestimmten Laufwerks ermitteln.
Derweil habe ich:
for /f "tokens=1" %%i in ('wmic logicaldisk get volumename^, name ^| findstr /L /c:"TEST"') do set "ZIELLW=%%i"  

Allerdings habe ich das Problem, dass der Name nicht exakt überprüft wird.
Sprich gibt es z.B. ein Laufwerk D: mit dem Namen "TEST" und (oder auch nur) ein Laufwerk E: mit dem Namen "TEST1" so wird durch die obige
Abfrage das Laufwerk E: ermittelt.

Inzwischen habe ich das Script auf die VolumeID umgestellt, die ist ja immer 8 Stellen lang und somit habe ich dort
das Problem nicht, aber es würde mich trotzdem interessieren wie man das auch für den Namen lösten könnte.

Schon mal vielen Dank für die Vorschläge!

Grüße
Martin

Content-ID: 375979

Url: https://administrator.de/contentid/375979

Ausgedruckt am: 21.11.2024 um 13:11 Uhr

rubberman
Lösung rubberman 05.06.2018 aktualisiert um 00:46:14 Uhr
Goto Top
Dafür gibt's WHERE.
for /f "tokens=2 delims==" %%i in ('wmic logicaldisk where "volumename='TEST'" get name /value') do for /f %%j in ("%%i") do set "ZIELLW=%%j"  
Die 2. FOR Schleife entfernt das bei WMIC notorisch vorhandene Carriage Return vom Wert.

BTW: Für FINDSTR gibt es im Regex \< und \> für Word Boundaries.
findstr /rc:"\<TEST\>"  

Steffen
m.fessler
m.fessler 05.06.2018 um 01:45:49 Uhr
Goto Top
Perfekt - vielen lieben Dank!