ulli61440

Label Übergabe in Batchdatei

Hallo, ich habe eine Batchdatei mit der ich den Label ausgebe.

wmic volume where DriveLetter="C:" get Label /value  

Vorher gebe ich die vorhanden Laufwerke auf dem Bildschirm aus. wenn ein Laufwerk ausgewählt wird mit das mit der Variablen lf ausgegeben

wir kann ich DriveLetter="C:" get
den Parameter so ändern dass es mit C: ersetzt

z. Bsp.
wmic volume where DriveLetter=%lf% get Label /value
aber das klappt nicht
kann mir da jemand helfen?
mit Echo %lf% hab ich das getesetet, dass der Parameter auch das Laufwerk hat.
Danke
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 673526

Url: https://administrator.de/forum/batchdatei-laufwerk-label-ausgeben-673526.html

Ausgedruckt am: 18.07.2025 um 07:07 Uhr

WinCobold
WinCobold 24.06.2025 um 18:57:50 Uhr
Hallo ulli,

das dürfte an den fehlenden Anführungszeichen liegen. Probiere doch mal ... DriveLetter="%lf%" get ...

Gruß vom
WinCobold
ulli61440
ulli61440 24.06.2025 um 22:59:03 Uhr
Danke, aber leider geht das auch nicht
Anzeige ist: Keine Instanzen verfügbar.
ulli61440
ulli61440 24.06.2025 um 23:05:30 Uhr
So sieht die Batchdatei aus:
echo off
cls
If Exist a:\NUL set "codea=A:"  
If Exist b:\NUL set "codeb=B:"  
If Exist c:\NUL set "codec=C:"  
If Exist D:\NUL set "coded=D:"  
If Exist e:\NUL set "codee=E:"  
If Exist f:\NUL set "codef=F:"  
If Exist g:\NUL set "codeg=G:"  
If Exist h:\NUL set "codeh=H:"  
If Exist i:\NUL set "codei=I:"  
If Exist j:\NUL set "codej=J:"  
If Exist K:\NUL set "codek=K:"  
If Exist L:\NUL set "codel=L:"  
If Exist m:\NUL set "codem=M:"  
If Exist n:\NUL set "coden=N:"  
If Exist o:\NUL set "codeo=O:"  
If Exist p:\NUL set "codep=P:"  
If Exist q:\NUL set "codeq=Q:"  
If Exist r:\NUL set "coder=R:"  
If Exist s:\NUL set "codes=S:"  
If Exist t:\NUL set "codet=T:"  
If Exist u:\NUL set "codeu=U:"  
If Exist v:\NUL set "codev=V:"  
If Exist w:\NUL set "codew=W:"  
If Exist x:\NUL set "codex=X:"  
If Exist y:\NUL set "codey=Y:"  
If Exist z:\NUL set "codez=Z:"  
echo wscript.echo inputbox(WScript.Arguments(0),WScript.Arguments(1)) >"%temp%\input.vbs" & for /f "tokens=* delims=" %%a in ('cscript //nologo "%temp%\input.vbs" "gefundene Laufwerke: %codea% %codeb% %codec% %coded% %codee% %codef% %codeg% %codeh% %codei% %codej% %codek% %codel% %codem% %coden% %codeo% %codep% %codeq% %coder% %codes% %codet% %codeu% %codev% %codew% %codex% %codey% %codez%" "Von welchem LAufwerk soll Label angezeigt werden?"') do set input1=%%a  
if [%input1%]==[] goto :abbruch
if [%input1%]==[a] set lf=a
if [%input1%]==[b] set lf=b
if [%input1%]==[c] set lf=c
if [%input1%]==[d] set lf=d
if [%input1%]==[e] set lf=e
if [%input1%]==[f] set lf=f
if [%input1%]==[g] set lf=g
if [%input1%]==[h] set lf=h
if [%input1%]==[i] set lf=i
if [%input1%]==[j] set lf=j
if [%input1%]==[k] set lf=k
if [%input1%]==[l] set lf=l
if [%input1%]==[m] set lf=m
if [%input1%]==[n] set lf=n
if [%input1%]==[o] set lf=o
if [%input1%]==[p] set lf=p
if [%input1%]==[q] set lf=q
if [%input1%]==[r] set lf=r
if [%input1%]==[s] set lf=s
if [%input1%]==[t] set lf=t
if [%input1%]==[u] set lf=u
if [%input1%]==[v] set lf=v
if [%input1%]==[w] set lf=w
if [%input1%]==[x] set lf=x
if [%input1%]==[y] set lf=y
if [%input1%]==[z] set lf=z
cls

if exist %lf%:\*.* goto :OK 
if not exist %lf%:\*.* goto :error1 

:OK
wmic volume where DriveLetter="%lf%" get Label /value  
pause
exit
WinCobold
Lösung WinCobold 25.06.2025 um 09:37:41 Uhr
Hallo ulli,

deine Variable enthält ja auch nur den Buchstaben, aber nicht den Doppelpunkt. Du musst also den Doppelpunkt (genau wie in den davorstehenden exist-Abfragen) mit angeben: ... DriveLetter="%lf%:" get ...

Gruß vom
WinCobold
ulli61440
ulli61440 25.06.2025 um 11:30:06 Uhr
Vielen Dank, es klappt so !
ulli61440
ulli61440 25.06.2025 um 11:43:33 Uhr
Manchmal liegt es an solchen Kleinigkeiten, gut wenn dann jemand anderes noch mal drüberschaut, vielen lieben Dank an alle
Baubutze
Baubutze 25.06.2025 um 13:02:07 Uhr
Mahlzeit,

beachte, dass mit Windows 11 24H2 WMIC im Standard nicht mehr installiert ist. Perspektivisch ist Powershell die bessere Wahl.

Grüße
TK1987
TK1987 25.06.2025 aktualisiert um 13:52:26 Uhr
Moin,

vereinfacht und ohne Umweg über VBS:
@echo off
setlocal EnableDelayedExpansion

set i=0

for /f "Tokens=1,2 Delims=: " %%A in ('wmic volume get driveletter^,label ^| find ":" ^| sort') do if exist "%%A:\" (  
  set /a i+=1
  set volumes=!volumes!%%A
  set !i!=%%B
)
echo Von welchem Laufwerk soll das Label angezeigt werden?
echo(
choice /c %volumes%

echo Label: !%ErrorLevel%!
pause

Gruß Thomas
BiberMan
BiberMan 25.06.2025 um 16:12:24 Uhr
Und als Powershell Oneliner
Get-CimInstance Win32_Volume | select-object DriveLetter,Capacity,FreeSpace,Filesystem,Label | Out-GridView -Title "Bitte Laufwerk markieren" -Passthru | % Label  
ulli61440
ulli61440 26.06.2025 um 12:18:06 Uhr
super, vielen Dank
ulli61440
ulli61440 26.06.2025 um 12:23:41 Uhr
Danke, wie wird das abgespeichert und wie aufgerufen
BiberMan
BiberMan 26.06.2025 aktualisiert um 12:49:26 Uhr
Zitat von @ulli61440:

Danke, wie wird das abgespeichert und wie aufgerufen

Oder alternativ mit Umgebung der Policy start mittels
powershell -EP Bypass -File "c:\pfad\script.ps1"  
ulli61440
ulli61440 26.06.2025 um 12:53:18 Uhr
danke
Serie: Batch Programmierung
Label Übergabe in Batchdatei13