Jump to content
Sign in to follow this  
kuehnlm

Auslesen von INI mit FOR Schleife

Recommended Posts

Hallo,

 

ich mal wieder und ein neues Problem:

 

Ich les ne INI-Datei mit ner FOR-Schleife aus. Die INI sieht so aus:

 

[stopped] uploadmgr Upload-Manager

[stopped] UPS Unterbrechungsfreie Stromversorgung

[Running] V2i Protector V2i Protector

[stopped] vds Dienst für virtuelle Datenträger (VDS)

 

OK - ist nur ein Ausschnitt - reicht aber zum Erklären.

Mein Problem ist nun: Ich muß die zweite Spalte auslesen. also:

 

for /f "tokens=2" %%i in (vorlage.ini) do echo %%i

 

Das Problem ist nun, dass der Eintrag V2i Protector ein Blank zwischendrin hat.

OK ich weiß, dass ich da wahrscheinlich was mit delims machen muß, aber nach der zweiten Spalte kommen Leerzeichen bis zum nächsten Wort...

 

Wie muß ich denn das machen???

 

supervielen Dank!!!

Share this post


Link to post

So - das Problem ist bei dem Aufruf nur, dass ich ja alles dahinter auch noch bekomme.

Ich brauch aber nur die mittlere Spalte.

 

Hab mir das mal genauer angeschaut. Dann sieht das so aus:

 

[stopped] UPS UPS.....

[Running] V2i Protector V2i Protector

 

Und ich brauch jetzt nur die zweite Spalte - mehr nicht....

 

Wie mach ich denn das??

Share this post


Link to post

Hallo kuehnlm,

 

probier es einmal so und suche dir das passende heraus.

 

for /f "tokens=1,2,3*" %%i in (vorlage.ini) do echo %%i %%j %%k

 

thorgood

Share this post


Link to post

Ne - das ist auch nicht das richtige...

vielleicht hab ich einfach noch nicht so genau geschildert, was eigentlich rauskommen sollte:

 

Ich hab den Ausdruck in der INI-Datei drinstehen:

 

[stopped] uploadmgr Upload-Manager

[stopped] UPS Unterbrechungsfreie Stromversorgung

[Running] V2i Protector V2i Protector

[stopped] vds Dienst für virtuelle Datenträger (VDS)

 

 

Das ganz vorne ist der Status des Dienstes, die mittlere Spalte (also uploadmgr, ups, v2i protector und vds) ist der Dienstname und dahinter kommt die Beschreibung.

 

Was ich jetzt brauch ist den Dienstnamen. Wär ja ganz einfach, wenn V2i Protector zusammengeschrieben wäre.

Wenn ich nämlich jetzt for /f "tokens=2,3" mach, dann kommt das raus:

 

uploadmgs Upload

ups unterbrechungsfreie

v2i protector

vds dienst

 

Für die vorletzte Zeile ist das ja auch richtig, aber nicht für die anderen....

 

Und jetzt?? :confused:

Share this post


Link to post

Guten Morgen,

 

da fällt mir mit Batch Syntax nicht viel zu ein.

Vielleicht solltest du die INI anders aufbauen.

Woher kommt die denn ?

 

thorgood

Share this post


Link to post

Hallo,

 

Ich mach zuerst ein srvinfo -r \\%computername% >> vorlage.ini

 

dann schneid ich alles über dem Ausdruck "Services" und ab "Network Card" ab und dann bleibt das übrig.

 

Ich könnt vielleicht auch die INI nochmals umbauen...??...weiß nicht ob das geht - hab auch schon ein bißchen rumprobiert.

 

In der INI steht ja drin:

[Running] - danach kommt ein TAB bis zum Dienstname und danach kommen erstmal noch etliche Leerzeichen bis die Beschreibung kommt.

Ich könnte doch jetzt hergehen und alles ab Zeichen 60 oder so bis zum Zeilenende abschneiden und in der Datei Vorlage1.ini speichern - geht sowas???

 

Danke

Share this post


Link to post

Du kannst über ein VBS Script WMI Infos über Dienste gut abfragen.

 

Hier ein Beispiel:

On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_Service",,48)
For Each objItem in colItems
   Wscript.Echo "Caption: " & objItem.Caption
   Wscript.Echo "DisplayName: " & objItem.DisplayName
   Wscript.Echo "InstallDate: " & objItem.InstallDate
   Wscript.Echo "Name: " & objItem.Name
   Wscript.Echo "State: " & objItem.State
Next

 

thorgood

Share this post


Link to post

Hallo,

 

jetzt musst mir aber helfen...ich hab keinen Plan von WMI und VBS.

 

Was muß ich genau tun? Wie ruf ich das Script auf?

Kann ich das Script auch aus ner Batch aufrufen??

 

Danke... :confused:

Share this post


Link to post

Da legst du dir eine Textdatei an mit der Endung vbs (zb svc.vbs),

kopierst den Code von oben dort hinein und gibst auf der Konsole

 

cscript.exe svc.vbs

 

ein.

 

thorgood

Share this post


Link to post

Super - funkt soweit.

 

Noch zwei Fragen:

1. kann ich das irgendwie auch in eine Datei umleiten?

2. Kann ich bei strComputer auch ne Variable wie %computername% angeben?

 

Danke

Share this post


Link to post

In der svc.vbs:

On Error Resume Next

Dim Args
Set Args = WScript.Arguments

strComputer = Args(0)
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_Service",,48)
For Each objItem in colItems
   Wscript.Echo "Caption: " & objItem.Caption
   Wscript.Echo "DisplayName: " & objItem.DisplayName
   Wscript.Echo "InstallDate: " & objItem.InstallDate
   Wscript.Echo "Name: " & objItem.Name
   Wscript.Echo "State: " & objItem.State
Next

 

und dann ausführen mit

 

cscript //nologo svc.vbs pcname>irgendwas.log

 

thorgood

Share this post


Link to post
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte überlege Dir, ob es nicht sinnvoller ist ein neues Thema zu erstellen.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

Werbepartner:



×
×
  • Create New...