Uninstallierte Geräte im Gerätemanager per Batch finden
Hi,
ich würde gerne per Batch erkennen, ob alle Geräte im Gerätemanager installiert sind, oder ob noch Treiber fehlen...
Sprich, sind noch gelbe Ausrufezeichen im Gerätemanager oder nicht?
So als Art End-Test...
Hardwareseitig stetiger Wechsel, das machts schwierig..
eventuell mit nem Zusatz-Prog wie devcon?
jemand eine idee?
Thx
ich würde gerne per Batch erkennen, ob alle Geräte im Gerätemanager installiert sind, oder ob noch Treiber fehlen...
Sprich, sind noch gelbe Ausrufezeichen im Gerätemanager oder nicht?
So als Art End-Test...
Hardwareseitig stetiger Wechsel, das machts schwierig..
eventuell mit nem Zusatz-Prog wie devcon?
jemand eine idee?
Thx
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 92561
Url: https://administrator.de/contentid/92561
Ausgedruckt am: 26.11.2024 um 12:11 Uhr
12 Kommentare
Neuester Kommentar
Geh dir Registry durch und suche nach "Driver"
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum
Deine Vermutung ist richtig. Es war weder ein Scherz noch geht es genauer.
REG QUERY und dann beackern. Du wolltest eine Idee, und nun mach mal.
Wenn du es einfach haben möchtest, sieh im Gerätemanager nach.
REG QUERY und dann beackern. Du wolltest eine Idee, und nun mach mal.
Wenn du es einfach haben möchtest, sieh im Gerätemanager nach.
Hallo chizophren!
Als erster Ansatz:
Zum Testen werden gestoppte Treiber als "Fehler" behandelt.
Grüße
bastla
Als erster Ansatz:
@echo off & setlocal
set "Log=%temp%\DeviceErrors.log"
if exist "%Log%" del "%Log%"
set /a Errors=0
set Name=
for /f "delims=" %%i in ('d:devcon status *\*') do set "Zeile=%%i" & call :ProcessLine
if %Errors% gtr 0 (
cls
echo %Errors% Fehler gefunden!
echo\
type "%Log%"
)
goto :eof
:ProcessLine
if defined Name goto :Auswertung
echo "%Zeile%"|findstr /i /c:"Name: ">nul || goto :eof
for /f "tokens=1* delims=: " %%a in ("%Zeile%") do set "Name=%%b"
goto :eof
:Auswertung
echo %Name%
echo "%Zeile%"|findstr /c:"problem">nul && goto :Fehler
echo "%Zeile%"|findstr /c:"stopped">nul && goto :Fehler
set Name=
goto :eof
:Fehler
>>"%Log%" echo %Name%;%Zeile%
set /a Errors+=1
set Name=
goto :eof
Grüße
bastla
Hallo chizophren!
Einerseits sollte sich mein Batch recht einfach integrieren lassen (an Deinen bisherigen Batch anhängen, wobei die Zeile 1 auf
zu ändern wäre, und entsprechend mit
aufrufen.
Die Überprüfung, ob Fehler gefunden wurden, lässt sich übrigens auf ein
reduzieren, da ja am Anfang eine ev noch vorhandene alte Logdatei ohnehin gelöscht wird und nur beim Auftreten eines Fehlers neu erstellt wird.
Grüße
bastla
Einerseits sollte sich mein Batch recht einfach integrieren lassen (an Deinen bisherigen Batch anhängen, wobei die Zeile 1 auf
:TreiberCheck
call :TreiberCheck
Die Überprüfung, ob Fehler gefunden wurden, lässt sich übrigens auf ein
if exist "%temp%\DeviceErrors.log"
Grüße
bastla
Hallo
auch wenn der Thread schon ein bisschen älter ist ;) - ich stehe vor einem sehr ähnlichen Problem.
Die Batch da oben hat mir sehr geholfen, aber ich habe noch ein paar Fragen dazu:
- wieso heisst es in Zeile 7 'd:devcon status *\*'?
devcon.exe ist doch nicht zwangsläufig im root von laufwerk d:...
- ich hätte ganz gerne neben den devicenamen auch noch die pci-id
wie kann ich zwei zeilen ausgeben?
Danke schon mal ;)
auch wenn der Thread schon ein bisschen älter ist ;) - ich stehe vor einem sehr ähnlichen Problem.
Die Batch da oben hat mir sehr geholfen, aber ich habe noch ein paar Fragen dazu:
- wieso heisst es in Zeile 7 'd:devcon status *\*'?
devcon.exe ist doch nicht zwangsläufig im root von laufwerk d:...
- ich hätte ganz gerne neben den devicenamen auch noch die pci-id
wie kann ich zwei zeilen ausgeben?
Danke schon mal ;)
Hallo netlord!
Den Pfad zur "devcon.exe" kannst Du passend angeben - schematisch sähe das dann inkl. Anzeige der ID etwa so aus:
Grüße
bastla
Den Pfad zur "devcon.exe" kannst Du passend angeben - schematisch sähe das dann inkl. Anzeige der ID etwa so aus:
@echo off & setlocal
set "Log=%temp%\DeviceErrors.log"
if exist "%Log%" del "%Log%"
set /a Errors=0
set "Name="
for /f "delims=" %%i in ('"d:\Pfad zu devcon.exe\devcon" status *\*') do set "Zeile=%%i" & call :ProcessLine
if %Errors% gtr 0 (
cls
echo %Errors% Fehler gefunden!
echo\
type "%Log%"
)
goto :eof
:ProcessLine
if defined Name goto :Auswertung
echo "%Zeile%"|findstr /i /c:"Name: ">nul && (
for /f "tokens=1* delims=: " %%a in ("%Zeile%") do set "Name=%%b"
) || (
if not defined ID set "ID=%Zeile%"
)
goto :eof
:Auswertung
echo ID: "%ID%"
echo Name: %Name%
echo "%Zeile%"|findstr /c:"problem">nul && goto :Fehler
echo "%Zeile%"|findstr /c:"stopped">nul && goto :Fehler
set "ID="
set "Name="
goto :eof
:Fehler
>>"%Log%" echo %Name%;"%ID%";%Zeile%
set /a Errors+=1
set "ID="
set "Name="
goto :eof
bastla