Abfrage laufender Dienste - Ergebnis in eine Textdatei schreiben
Hallo zusammen!
Verzweifelt sitze ich nun seit mehreren Stunden vor meinen Batchdateien und versuche folgendes Problem zu lösen.
Ich brauche ein Batchdatei, die ich mir irgendwo hinlege und die zwei oder drei Dienste von Windows abfragt - und zwar nur, ob diese laufen oder nicht.
Beispiel:
Wenn ich das mache, kommt eine dicke Ausgabe - soviel brauch ich gar nicht.
Ich benötige lediglich den Namen und den Status.
und das selbe nochmal für "STATE". Somit habe ich einen Zweizeiler, den ich mir in eine Textdatei schreiben lassen kann:
Nun stören mich aber für die weitere Verwendung der TXT Datei zwei Dinge: erstens, die Freizeichen und zweitens, dass ich zwei Zeilen habe.
Ich möchte eigentlich gern, dass der Name und der Status in einer einzigen Zeile stehen und das überflüssige Informationen verschwinden, sodass der Inhalt der Textdatei am Ende ungefähr so aussieht:
Ist das denn möglich? Wenn ja, wie? Könnte man nicht einfach eine Variable angeben, deren Wert man nach und nach mit den Ausgaben von sc query füllt und diese dann am Ende in eine TXT Datei schreibt?
Ich weiß, dass die Umsetzung in einer höheren Programmiersprache ein Kinderspiel wäre - nun reizt mich aber die Umsetzung mit einer Batch. Ich freue mich über eure Hilfe.
Danke. derroman
Verzweifelt sitze ich nun seit mehreren Stunden vor meinen Batchdateien und versuche folgendes Problem zu lösen.
Ich brauche ein Batchdatei, die ich mir irgendwo hinlege und die zwei oder drei Dienste von Windows abfragt - und zwar nur, ob diese laufen oder nicht.
Beispiel:
sc query "Netlogon"
Wenn ich das mache, kommt eine dicke Ausgabe - soviel brauch ich gar nicht.
Ich benötige lediglich den Namen und den Status.
sc query "Netlogon" | findstr "SERVICE_NAME"
und das selbe nochmal für "STATE". Somit habe ich einen Zweizeiler, den ich mir in eine Textdatei schreiben lassen kann:
sc query "Netlogon" | findstr "SERVICE_NAME STATE" > temp.txt
Nun stören mich aber für die weitere Verwendung der TXT Datei zwei Dinge: erstens, die Freizeichen und zweitens, dass ich zwei Zeilen habe.
Ich möchte eigentlich gern, dass der Name und der Status in einer einzigen Zeile stehen und das überflüssige Informationen verschwinden, sodass der Inhalt der Textdatei am Ende ungefähr so aussieht:
Netlogon running
AndererDienstname running
Ist das denn möglich? Wenn ja, wie? Könnte man nicht einfach eine Variable angeben, deren Wert man nach und nach mit den Ausgaben von sc query füllt und diese dann am Ende in eine TXT Datei schreibt?
Ich weiß, dass die Umsetzung in einer höheren Programmiersprache ein Kinderspiel wäre - nun reizt mich aber die Umsetzung mit einer Batch. Ich freue mich über eure Hilfe.
Danke. derroman
Please also mark the comments that contributed to the solution of the article
Content-ID: 90229
Url: https://administrator.de/forum/abfrage-laufender-dienste-ergebnis-in-eine-textdatei-schreiben-90229.html
Printed on: May 13, 2025 at 04:05 o'clock
5 Comments
Latest comment

Servus,
interessante Frage
Mir fallen spontan zwei Wege ein, wie du zum Ziel kommen kannst:
Variante 1
Du nimmst einen Hexeditor und schaust nach dem (CLRF) in der txt und änderst den mit ssed z.B gegen ein ;
Variante 2
Die Ausgabe landet mit > in einer temp.tmp - dort schaust du mit findstr nach den 3? möglichen States und pipest das nun in eine .log Datei.
Wenn du mit SC nicht den Dienst, sondern eine Variable (den die diversen Dienste als Inhalt hat) abfragst, wäre das dann auch noch schlank.
interessante Frage
Mir fallen spontan zwei Wege ein, wie du zum Ziel kommen kannst:
Variante 1
Du nimmst einen Hexeditor und schaust nach dem (CLRF) in der txt und änderst den mit ssed z.B gegen ein ;
Variante 2
Die Ausgabe landet mit > in einer temp.tmp - dort schaust du mit findstr nach den 3? möglichen States und pipest das nun in eine .log Datei.
Wenn du mit SC nicht den Dienst, sondern eine Variable (den die diversen Dienste als Inhalt hat) abfragst, wäre das dann auch noch schlank.
Das mit dem Anhängen an eine Variable geht wobei mir nicht ganz klar ist was die Abfrage
Soll da Duja wieder "Netlogon" zurück bekommst...
Aber für den Rest gehts dann so von der cmd direkt aus:
sc query "Netlogon" | findstr "SERVICE_NAME"
Aber für den Rest gehts dann so von der cmd direkt aus:
FOR /F "tokens=4 delims= " %i in ('sc query "Netlogon" ^| findstr "SERVICE_NAME STATE"') do @echo Netlogon %i>>datei.txt