marcimarc85
Goto Top

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 "

Content-Key: 356012

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

Ausgedruckt am: 29.03.2024 um 15:03 Uhr

Mitglied: Pedant
Pedant 24.11.2017 aktualisiert um 13:17:54 Uhr
Goto Top
Hallo MarciMarc85,

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?

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
Mitglied: MarciMarc85
MarciMarc85 24.11.2017 um 13:55:39 Uhr
Goto Top
Hallo Frank. Vielen Dank dafür! Das klappt sehr gut. Die Leerzeichen am Ende sind weg.

Allerdings, wenn ich mir jetzt die Zeilen nach und nach in eine Variable ausgeben lasse, kommt immer nur der erste Teil an.

Also:

var1=Softwarename

und nicht

var1= Softwarename DienstnameA
Mitglied: Pedant
Pedant 24.11.2017 um 15:46:41 Uhr
Goto Top
Hallo MarciMarc85,

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.

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.
Mitglied: chrisButterfly
chrisButterfly 11.05.2018 um 18:16:03 Uhr
Goto Top
Ich würde den Substring nutzen und vorher die Länge des Dienstnamens auslesen.