Jump to content

Hilfe mit VBS-Script zum Auswerten von TXT oder XML Dateien


Recommended Posts

Hallo an das MCSEBoard!

 

Ich bin neu hier, da ich meine Fragen normalerweise in einem anderen Forum stelle, da ich auf eine Frage aber bisher keine Antwort bekommen habe und es etwas dringend ist, habe ich nach anderen Foren bei Google gesucht und bin auf dieses hier gestoßen.

 

Ich muss im Rahmen meiner Arbeit öfters längere Dateien auswerten, meistens im .txt Format, manchmal aber auch im .xml Format.

 

Ich möchte diese sehr aufwendige und lästige Arbeit aber automatisieren und dafür ein VBScript einsetzen, da ich mich mit VBS einigermaßen auskenne und ich glaube dass es damit besser zu lösen ist als mit einer Batch File.

 

Und zwar soll das Script in diesem Fall folgendes können: (Wenn ich einmal ein funktionierendes habe, kann ich es ja leicht mit wenigen Änderungen immer an die jeweils neue Aufgabe anpassen.)

 

Es soll eine .txt - Datei Zeile für Zeile nach einem String durchsuchen, wenn es ihn gefunden hat auf drei weitere mögliche Strings in derselben Zeile prüfen und jede gefundene Zeile, je nachdem welcher zweite String gefunden wurde in eine neu erstellte .txt - Datei schreiben (also jeweils eine Datei für den ersten String + einen der drei möglichen weiteren Strings).

 

EDIT: Es sollte auch noch, wenn es zwar den ersten String in einer Zeile gefunden hat, aber keinen der drei möglichen weiteren, diese Zeilen in eine vierte .txt - Datei schreiben.

 

Ich habe bereits zwei Scripte geschrieben, die ohne Fehlermeldung laufen, aber mein Problem ist die Codes der beiden Dateien zusammenzufügen und auszubauen, also das was ich geschrieben hab ist noch nicht ausreichend funktionsfähig für das was ich möchte dass das fertige Script können soll.

 

Ich werde die beiden Codes hier einfügen, damit Ihr seht was ich bisher habe. (Die Dateinamen und der erste String, der bereits in meinen Anfangsversuchen enthalten ist, habe ich durch "***" ersetzt.)

 

strSourceFile = "*******.txt"
strDestinationFile = "**********.txt"
strPattern = "\b*********\b"

Set objRegEx = New RegExp
objRegEx.Global = True
objRegEx.IgnoreCase = False
objRegEx.Pattern = strPattern

Set objFSO = CreateObject("Scripting.FileSystemObject")
strFileContent = objFSO.OpenTextFile(strSourceFile, 1).ReadAll

If objRegEx.Test(strFileContent) Then
Set objDestFile = objFSO.OpenTextFile(strDestFile, 2, True)
Set colMatches = objRegEx.Execute(strFileContent)
For Each objMatch In colMatches
objDestFile.WriteLine objMatch.Value
Next
objDestFile.Close
End If

 

 

Set objFSO = CreateObject("Scripting.FileSystemObject")
Const ForReading = 1
Const ForWriting = 2

Set objFile = objFSO.OpenTextFile("*******.txt", ForReading)
strText = objFile.ReadAll
objFile.Close

set ResultFile = objFSO.CreateTextFile("**********.txt", true)
resultFile.WriteLine strNewText
resultFile.Close

 

Ich weiß, ich bin noch nicht weit und bin auch nicht sehr gut darin (hatte immer nur Basiswissen und außerdem hab ich schon lange kein VBScript mehr geschrieben), daher seid bitte nachsichtig mit mir wenn ich mich ziemlich dämlich anstelle und in dem Punkt noch bzw. wieder ein ziemlicher Noob bin....

 

Ich hoffe jemand ist so nett mir zu helfen, darüber würde ich mich sehr freuen!

 

Da man Crosspostings ja verlinken soll, hier noch der Link zu BleepingComputer:

 

https://www.bleepingcomputer.com/forums/t/752780/asking-for-help-with-vbs-script/

 

Liebe Grüße und schonmal vielen Dank an jeden der sich meinen Post ganz durchgelesen hat!

 

Lobol

Edited by Lobol
Link to post

Hi,

 

das dürfte - zumindest für mich - mit PowerShell deutlich einfacher werden. Bei PowerShell gibt es hier sicherlich auch mehr "helfende Hände". ;)

 

Für einen Anfang in PowerShell:

Gruß

Jan

Link to post

Na dann erstmal willkommen im MCSEboard.

 

vor 32 Minuten schrieb Lobol:

Ich möchte diese sehr aufwendige und lästige Arbeit aber automatisieren und dafür ein VBScript einsetzen, da ich mich mit VBS einigermaßen auskenne

 

Die Zahl der Leute, die Dir mit VBScript helfen können wird in Zukunft weiter abnehmen. Die Skripting-Technologie der Wahl für die Zuknft dürfte eher PowerShell sein.  Wenn Du Dich durchringen kannst, das mit PowerShell zu versuchen, gibt es hier mindestens einen, der Dir gern weiterhilft.  (ooops, Jan war schneller ... also mindestens 2  ;-) )

Link to post
vor 28 Minuten schrieb testperson:

Hi,

 

das dürfte - zumindest für mich - mit PowerShell deutlich einfacher werden. Bei PowerShell gibt es hier sicherlich auch mehr "helfende Hände". ;)

 

Gruß

Jan

 

vor 37 Minuten schrieb BOfH_666:

Na dann erstmal willkommen im MCSEboard.

 

Die Zahl der Leute, die Dir mit VBScript helfen können wird in Zukunft weiter abnehmen. Die Skripting-Technologie der Wahl für die Zuknft dürfte eher PowerShell sein.  Wenn Du Dich durchringen kannst, das mit PowerShell zu versuchen, gibt es hier mindestens einen, der Dir gern weiterhilft.  (ooops, Jan war schneller ... also mindestens 2  ;-) )

 

Hi Jan und BOfH_666! Toll dass ich schon so schnell erste Antworten bekomme!

 

In dem Buch aus dem ich VBScript gelernt habe, gab es am Ende auch ein oder zwei Kapitel über PowerShell. Daher habe ich einen groben Überblick wie PowerShell funktioniert, es baut ja wohl auch teilweise auf VBS auf. Trotzdem habe ich davon kaum eine Ahnung und auch nur ein einziges Mal versucht ein PS-Script zu schreiben, was dann allerdings nicht funktioniert hat. :D Daher bin ich dann wieder auf VBS bzw. je nach Bedarf auch auf Batch und JScript zurückgewichen.

 

Es wäre schon interessant ein wenig über PS zu lernen, da ich schon auch mitbekommen habe, dass es in den letzten Jahren immer häufiger verwendet wird, aber dabei bräuchte ich wohl viel mehr Hilfe und ich müsste für diese Aufgaben mein geliebtes VBS aufgeben.... ;-)

 

Ich werde mir mit möglichst großer Aufmerksamkeit die verlinkten Artikel durchlesen, glaube aber kaum dass ich dann schon in der Lage sein werde selbstständig etwas aufzusetzen, auch weil ich bereits erwähntes Buch nicht bei mir habe, da ich gerade nicht in meiner Wohnung bzw. in der Umgebung bin.

 

Wenn es ok ist werde ich noch einige Fragen über die Umsetzung mit PS hier stellen (einige mehr vermutlich :D ), aber vielleicht findet sich ja auch noch jemand der mit mir an meinem VBS-Grundstock weiterbastelt.

 

Auf jeden Fall danke für Eure Antworten und ich würde mich freuen wenn Ihr meinen Thread weiterverfolgen würdet! :-)

 

LG,

Lobol (Thomas)

Link to post

So, ich habe mich jetzt etwas eingelesen. Wie gesagt muss ich bei PS ziemlich bei null anfangen.

 

Ich habe mir jetzt folgendes gebastelt um zumindest nach dem ersten String zu suchen:

 

Select-string -C:/Users/****/Desktop/***************/*******.txt -SimpleMatch "*********" | select LineNumber

 

Würde das so funktionieren?

Und könnte man dann die Suche nach einem der weiteren Strings bzw. keinem der drei vorgegebenen so verfeinern?

 

foreach {$_.ToString(***)

 

Oder soll ich mir ein Script schreiben, dass erstmal alle Zeilen mit dem ersten String raussortiert und dann jeweils ein weiteres dass die weitere Unterteilung vornimmt?

 

Außerdem habe ich noch keine Vorstellung davon, wie es funktioniert, dass die Ergebnisse in .txt - Dateien geschrieben werden und nicht in der Shell ausgegeben werden...

 

 

vor 1 Stunde schrieb testperson:

das dürfte - zumindest für mich - mit PowerShell deutlich einfacher werden. Bei PowerShell gibt es hier sicherlich auch mehr "helfende Hände". ;)

 

vor 1 Stunde schrieb BOfH_666:

Wenn Du Dich durchringen kannst, das mit PowerShell zu versuchen, gibt es hier mindestens einen, der Dir gern weiterhilft.  (ooops, Jan war schneller ... also mindestens 2  ;-) )

 

Ich hoffe Ihr könnt mir hier noch weiterhelfen bzw. erstmal sagen ob ich auf dem richtigen Weg bin ;D

 

 

LG Thomas

Link to post

Dann fang doch mal mit Get-Content an. ;)

 

Für den Anfang, das vermutlich "schwierigste":

$myFile = Get-Content -Path C:\Install\BelegtransferLog.txt
$i = 0

foreach($Line in $myFile){
    $i++
    Write-Host $("Zeile {0}: {1}" -f $i, $Line)
}

 

Link to post

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.   Paste as plain text instead

  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.

×
×
  • Create New...