toolix
Goto Top

Laufwerk anhand Seriennr. via Batch-Script identifizieren

In einem Batch-Skript unter Windows XP möchte ich einen angeschlossenen Datenträger via Volume-Seriennr. identifizieren.

Dafür nutze ich das Kommando fsutil fsinfo volumeinfo in einer Schleife.

Folgendes Batch-Skript sollte die Seriennummern aller verfügbaren Laufwerksbuchstaben von C...Z abfragen und die gefundenen Seriennummern mit einer Vorgabe vergleichen.

@echo off & setlocal

Set VolSN=0x12345678

for %%a in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do ( 
	fsutil fsinfo volumeinfo %%a:\ >nul 
	IF ERRORLEVEL 0 for /f "Tokens=3* delims=\ " %%i in ('fsutil fsinfo volumeinfo %%a:\^|find "Volumeseriellennummer"') do (  
		if %%i==%VolSN% (
			echo gefunden
		) else (
			:: mache nichts
		)
	)
) 

endlocal
exit

Findet das Skript ein Volumen, bei dem die Seriennummern übereinstimmen, so soll es eine Erfolgsmeldung ausgeben.

Das Problem besteht darin, dass der Vergleich der gefundenen Seriennummer mit der Vorgabe noch nicht funktioniert.

Bin für jede Hilfe dankbar.

Content-Key: 110690

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

Printed on: April 24, 2024 at 23:04 o'clock

Mitglied: 60730
60730 Mar 06, 2009 at 10:33:06 (UTC)
Goto Top
Servus,

irgendwie ist dein Script etwas zu lang....
und wenn du @echo off rausgenommen hättest - wärst du auch auf mindestens einen Fehler gekommen.
"Exit" - selbst wenn dein Script funktioniert hätte - exit gibt dir gar nicht die Möglichkeit - etwas zu sehen, weil die Dosbos dabei immer geschlossen wird face-wink

@echo off & setlocal
@Set "VolSN=0x12345678"  
@for %%a in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (fsutil fsinfo volumeinfo %%a:\)|find "%VolSN%" && goto found  
goto end
:found
echo Laufwerk %VolSN% wurde gefunden
:end		
endlocal
pause

gruß
Member: toolix
toolix Mar 06, 2009 at 10:48:33 (UTC)
Goto Top
Danke für die schnelle Hilfe.

Vor dem exit hatte ich eigentlich auch noch ein pause stehen.

Ich habe das Beispiel nun noch erweitert, so dass mir von dem entsprechenden Volume mit der vorgegebenen Seriennummer noch der Laufwerksbuchstabe zurückgegeben wird.

@echo off & setlocal

Set VolSN=0x12345678

@for %%a in (C D E F G H I J K L M N O P Q R S T U V W X Y Z) do (fsutil fsinfo volumeinfo %%a:\)|find "%VolSN%" && set Vol=%%a && goto found   
goto end 

:found 
echo Das Laufwerk %VolSN% wurde gefunden 
echo Es hat den Laufwerksbuchstaben %Vol%
goto end

:end		 
endlocal 
Mitglied: 60730
60730 Mar 06, 2009 at 10:59:56 (UTC)
Goto Top
Danke für die schnelle Hilfe.

nicht dafür - danke fürs "Danke"

Ps: Du magst wohl gerne etwas "mehr" *lach - Zeile 11 ist etwas überflüssig face-wink
Nach Zeile 10 geht "er" eh zu Zeile 13.

Gruß