kuehnlm 10 Geschrieben 4. August 2004 Melden Teilen Geschrieben 4. August 2004 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!!! Zitieren Link zu diesem Kommentar
thorgood 10 Geschrieben 4. August 2004 Melden Teilen Geschrieben 4. August 2004 Sooo... for /f "tokens=1*" %%i in (vorlage.ini) do echo %%j thorgood Zitieren Link zu diesem Kommentar
kuehnlm 10 Geschrieben 4. August 2004 Autor Melden Teilen Geschrieben 4. August 2004 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?? Zitieren Link zu diesem Kommentar
thorgood 10 Geschrieben 4. August 2004 Melden Teilen Geschrieben 4. August 2004 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 Zitieren Link zu diesem Kommentar
kuehnlm 10 Geschrieben 5. August 2004 Autor Melden Teilen Geschrieben 5. August 2004 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?? Zitieren Link zu diesem Kommentar
thorgood 10 Geschrieben 5. August 2004 Melden Teilen Geschrieben 5. August 2004 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 Zitieren Link zu diesem Kommentar
kuehnlm 10 Geschrieben 5. August 2004 Autor Melden Teilen Geschrieben 5. August 2004 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 Zitieren Link zu diesem Kommentar
thorgood 10 Geschrieben 5. August 2004 Melden Teilen Geschrieben 5. August 2004 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 Zitieren Link zu diesem Kommentar
kuehnlm 10 Geschrieben 5. August 2004 Autor Melden Teilen Geschrieben 5. August 2004 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... Zitieren Link zu diesem Kommentar
thorgood 10 Geschrieben 5. August 2004 Melden Teilen Geschrieben 5. August 2004 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 Zitieren Link zu diesem Kommentar
kuehnlm 10 Geschrieben 5. August 2004 Autor Melden Teilen Geschrieben 5. August 2004 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 Zitieren Link zu diesem Kommentar
thorgood 10 Geschrieben 5. August 2004 Melden Teilen Geschrieben 5. August 2004 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 Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.