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-Key: 375979

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

Printed on: April 19, 2024 at 17:04 o'clock

Member: rubberman
Solution rubberman Jun 04, 2018 updated at 22:46:14 (UTC)
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
Member: m.fessler
m.fessler Jun 04, 2018 at 23:45:49 (UTC)
Goto Top
Perfekt - vielen lieben Dank!