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

Printed on: April 16, 2024 at 18:04 o'clock

Member: Pedant
Pedant Nov 24, 2017 updated at 12:17:54 (UTC)
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
Member: MarciMarc85
MarciMarc85 Nov 24, 2017 at 12:55:39 (UTC)
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
Member: Pedant
Pedant Nov 24, 2017 at 14:46:41 (UTC)
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.
Member: chrisButterfly
chrisButterfly May 11, 2018 at 16:16:03 (UTC)
Goto Top
Ich würde den Substring nutzen und vorher die Länge des Dienstnamens auslesen.