Vorhandene Dienste mit Liste vergleichen
Auf einem WindowsXP-Rechner sollen die Namen aller Windows-Dienste abgefragt werden.
In einer Textdatei (vorgabe.txt) sind zeilenweise Namen von Windows-Dienste, für die es bereits eine Vorgabe gibt, hinterlegt.
Die Ausgabe soll mir anzeigen, für welche Dienste auf dem PC es noch keine Vorgabe gibt bzw. welche Dienste nicht in der vorgabe.txt vorhanden sind.
Eine Erweiterung wäre....
In einer Textdatei (vorgabe.txt) sind zeilenweise Namen von Windows-Dienste mit Status und Autostarttyp hinterlegt.
z.B. clipsrv,running,auto oder tapisrv,stopped,demand
Für jeden Dienst auf dem PC werden die Dienste laut "Vorgabe" gesetzt.
Kommt ein Dienst nicht in der Liste vor bzw. der Dienst kann nicht laut Vorgaben gesetzt werden, soll der Name des Dienstes angezeigt oder in eine andere Textdatei z.B. Fehlend.txt geschrieben werden.
Bisher habe ich versucht alle Dienste in eine Datei zu speichern und dann zu prüfen, ob z.B. der Dienstname in beiden Dateien vorhanden ist.
z.B. sc query type= service state= all| findstr /r /C:"SERVICE_NAME:" >tmpsrv.txt
Jedoch ist das sehr umständlich, da man ja vielleicht mit einer For-Schleife Dienst für Dienst auf dem PC abrufen und prüfen könnte, ob der Name in der vorgabe.txt vorhanden ist oder fehlt.
Kann mir bitte jemand weiterhelfen oder hat einen Tip dafür?
Danke.
Egge
In einer Textdatei (vorgabe.txt) sind zeilenweise Namen von Windows-Dienste, für die es bereits eine Vorgabe gibt, hinterlegt.
Die Ausgabe soll mir anzeigen, für welche Dienste auf dem PC es noch keine Vorgabe gibt bzw. welche Dienste nicht in der vorgabe.txt vorhanden sind.
Eine Erweiterung wäre....
In einer Textdatei (vorgabe.txt) sind zeilenweise Namen von Windows-Dienste mit Status und Autostarttyp hinterlegt.
z.B. clipsrv,running,auto oder tapisrv,stopped,demand
Für jeden Dienst auf dem PC werden die Dienste laut "Vorgabe" gesetzt.
Kommt ein Dienst nicht in der Liste vor bzw. der Dienst kann nicht laut Vorgaben gesetzt werden, soll der Name des Dienstes angezeigt oder in eine andere Textdatei z.B. Fehlend.txt geschrieben werden.
Bisher habe ich versucht alle Dienste in eine Datei zu speichern und dann zu prüfen, ob z.B. der Dienstname in beiden Dateien vorhanden ist.
z.B. sc query type= service state= all| findstr /r /C:"SERVICE_NAME:" >tmpsrv.txt
Jedoch ist das sehr umständlich, da man ja vielleicht mit einer For-Schleife Dienst für Dienst auf dem PC abrufen und prüfen könnte, ob der Name in der vorgabe.txt vorhanden ist oder fehlt.
Kann mir bitte jemand weiterhelfen oder hat einen Tip dafür?
Danke.
Egge
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 121299
Url: https://administrator.de/forum/vorhandene-dienste-mit-liste-vergleichen-121299.html
Ausgedruckt am: 07.05.2025 um 19:05 Uhr
4 Kommentare
Neuester Kommentar
Auch Dir ein freundliches Hallo und willkommen im Forum!
Die "sc"-Ausgabe, wie Du es bereits skizziert hast, zwischenzuspeichern und dann zeilenweise zu vergleichen könnte etwa so gehen:
Grüße
bastla
Die "sc"-Ausgabe, wie Du es bereits skizziert hast, zwischenzuspeichern und dann zeilenweise zu vergleichen könnte etwa so gehen:
@echo off & setlocal
set "Vorgabe=D:\vorgabe.txt"
set "Aktuell=%temp%\aktuell.txt"
sc query type= service state= all| findstr /C:"SERVICE_NAME:" >"%Aktuell%"
echo Nicht in der Vorgabe enthaltene Dienste:
for /f "usebackq delims=" %%i in ("%Aktuell%") do findstr /x /c:"%%i" "%Vorgabe%">nul || echo %%i
bastla
Hallo Eggebert!
Da Du aus der jeweiligen Zeile alles nach dem ersten Leerzeichen benötigst, sollte es etwa so gehen:
Zu beachten wäre ev noch, dass "findstr" derzeit (wegen "/x") nach komplett übereinstimmenden Zeilen sucht ...
Grüße
bastla
Da Du aus der jeweiligen Zeile alles nach dem ersten Leerzeichen benötigst, sollte es etwa so gehen:
for /f "usebackq tokens=1*" %%i in ("%Aktuell%") do findstr /x /c:"%%j" "%Vorgabe%">nul || echo %%j
Grüße
bastla