BATCH Variable aus .txt Datei ohne Leerzeichen am Ende
Hallo,
Ich hab ein problem und finde einfach nicht den richtigen Lösungsweg.
eine Software hat mehrere Windows Dienste, die installiert werden und dann auch in den Diensten auftauchen. Nun gibt es bei unseren Kunden unterschiedliche Dienste, die auch unterschiedlich heißen. Nach der Installation starten nicht immer alle dieser Dienste automatisch. Daher will ich die Dienste auslesen und anschließend in einer Variablen zur Verfügung stellen, um sie mit "net start" zu starten.
Die dienste bestehen aus 2 Wörtern und einem Leerzeichen in der Mitte " Softwarename Dienstname"
Das Script mit einer Schleife läuft schon. ein anderes Script fragt vorher die notwendigen Dienste ab und schreibt diese untereindander in eine .txt Datei.
Das mache ich so :
wmic path win32_service get Caption |findstr "Softwarename">liste.txt
in der Liste steht dann:
Softwarename DienstnameA
Softwarename DienstnameB
Softwarename DienstnameC
Softwarename DienstnameD
Softwarename DienstnameE
usw.
Nun sind die Dienstnamen unterschiedlich lang, beginnen aber immer mit "Softwarename". Das Script, was nachher prüft, ob die Dienste laufen nimmt aber nicht den ganzen Dienstnamen aus jeder Zeile, sondern nur das erste Wort, bis zum Leerzeichen. Hab es auch schon irgendwie hinbekommen, dass die ganze Zeile in die Variable übernommen wird, aber das Problem dann ist, dass nach dem 2ten Wort noch einige Leerzeichen kommen, die mit übernommen werden und somit der dienst natürlich nicht als solcher erkannt wird.
Lange Reder, kurzer Sinn.
Kann mir jemand helfen, wie ich die Abfrage der Dienste so gestalten kann, dass nur die ersten beiden Wörter in die .txt Datei geschrieben werden? Alles andere klappt ja soweit.
Also, das die Variable dann quasi so aussieht:
var1="Softwarename DienstnameA"
und nicht so wie jetzt:
var1="Softwarename DienstnameA "
Ich hab ein problem und finde einfach nicht den richtigen Lösungsweg.
eine Software hat mehrere Windows Dienste, die installiert werden und dann auch in den Diensten auftauchen. Nun gibt es bei unseren Kunden unterschiedliche Dienste, die auch unterschiedlich heißen. Nach der Installation starten nicht immer alle dieser Dienste automatisch. Daher will ich die Dienste auslesen und anschließend in einer Variablen zur Verfügung stellen, um sie mit "net start" zu starten.
Die dienste bestehen aus 2 Wörtern und einem Leerzeichen in der Mitte " Softwarename Dienstname"
Das Script mit einer Schleife läuft schon. ein anderes Script fragt vorher die notwendigen Dienste ab und schreibt diese untereindander in eine .txt Datei.
Das mache ich so :
wmic path win32_service get Caption |findstr "Softwarename">liste.txt
in der Liste steht dann:
Softwarename DienstnameA
Softwarename DienstnameB
Softwarename DienstnameC
Softwarename DienstnameD
Softwarename DienstnameE
usw.
Nun sind die Dienstnamen unterschiedlich lang, beginnen aber immer mit "Softwarename". Das Script, was nachher prüft, ob die Dienste laufen nimmt aber nicht den ganzen Dienstnamen aus jeder Zeile, sondern nur das erste Wort, bis zum Leerzeichen. Hab es auch schon irgendwie hinbekommen, dass die ganze Zeile in die Variable übernommen wird, aber das Problem dann ist, dass nach dem 2ten Wort noch einige Leerzeichen kommen, die mit übernommen werden und somit der dienst natürlich nicht als solcher erkannt wird.
Lange Reder, kurzer Sinn.
Kann mir jemand helfen, wie ich die Abfrage der Dienste so gestalten kann, dass nur die ersten beiden Wörter in die .txt Datei geschrieben werden? Alles andere klappt ja soweit.
Also, das die Variable dann quasi so aussieht:
var1="Softwarename DienstnameA"
und nicht so wie jetzt:
var1="Softwarename DienstnameA "
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 356012
Url: https://administrator.de/contentid/356012
Ausgedruckt am: 19.11.2024 um 09:11 Uhr
4 Kommentare
Neuester Kommentar
Hallo MarciMarc85,
so sollte es gehen:
Gruß Frank
Zitat von @MarciMarc85:
Kann mir jemand helfen, wie ich die Abfrage der Dienste so gestalten kann, dass nur die ersten beiden Wörter in die .txt Datei geschrieben werden?
Kann mir jemand helfen, wie ich die Abfrage der Dienste so gestalten kann, dass nur die ersten beiden Wörter in die .txt Datei geschrieben werden?
so sollte es gehen:
@echo off
if exist liste.txt del liste.txt
for /f "tokens=1,2" %%f in ('wmic path win32_service get Caption ^|findstr "Softwarename"') do >>liste.txt echo %%f %%g
Gruß Frank
Hallo MarciMarc85,
Dann musst Du in Zeile 5 Deines Codes noch Anführungszeichen setzen.
Gruß Frank
Welche Zeile 5 meine ich eigentlich?
Ja, frag ich mich auch gerade, Du hast ja keinen Code gepostet.
Zitat von @MarciMarc85:
Allerdings, wenn ich mir jetzt die Zeilen nach und nach in eine Variable ausgeben lasse, kommt immer nur der erste Teil an.
Allerdings, wenn ich mir jetzt die Zeilen nach und nach in eine Variable ausgeben lasse, kommt immer nur der erste Teil an.
Dann musst Du in Zeile 5 Deines Codes noch Anführungszeichen setzen.
Gruß Frank
Welche Zeile 5 meine ich eigentlich?
Ja, frag ich mich auch gerade, Du hast ja keinen Code gepostet.