Argument in VBS Script funktiiert nicht mehr....
Hallo,
ich exportiere Dateien aus einem Datensystem die wie folgt aufgebaut sind
Um mir die Files einzeln aufzugliedern verwende ich folgendes Script:
Bis letzte Woche hat es noch ohne Probleme funktioniert, aber seit heute Splittet er dieses nicht mehr entsprechend.
D.h. er teilt die Datei zwar entsprechend |; (ISH. ect. auf
nur bei IMXXXXX und einem Absatz setzt er nicht mehr das STOP
Was ist im Script falsch?
ich exportiere Dateien aus einem Datensystem die wie folgt aufgebaut sind
IM6262626|fdhdfh hthzhsfjrtsjsj|+++++++ Lösung ++++++++ 05.01.2011 10:07:09 (ISH.GWERGWERGHSE): 05.01.2011 09:59:48 (ISH.HWHWHZ): Incident took over 05.01.2011 09:57:00 (ISH.RFQTEG): Transfer to ISH.FWGSGDD with request for processing.
IM6262626|fdhdfh hthzhsfjrtsjsj|+++++++ Lösung ++++++++ 05.01.2011 10:07:09 (ISH.GSGHSDGH): 05.01.2011 09:59:48 (ISH.HWHWHZ): Incident took over 05.01.2011 09:57:00 (ISH.RFQTEG): Transfer to ISH.FWGSGDD with request for processing.
IM6262626|fdhdfh hthzhsfjrtsjsj|+++++++ Lösung ++++++++ 05.01.2011 10:07:09 (ISH.DFHDFJR): 05.01.2011 09:59:48 (ISH.HWHWHZ): Incident took over 05.01.2011 09:57:00 (ISH.RFQTEG): Transfer to ISH.FWGSGDD with request for processing.
IM6262626|fdhdfh hthzhsfjrtsjsj|+++++++ Lösung ++++++++ 05.01.2011 10:07:09
If WScript.Arguments.Count < 1 Then
WScript.Echo "Keine Textdatei als Paramter übergeben!"
WScript.Quit 1
End If
D = WScript.Arguments(0) 'Datei
Set fso = CreateObject("Scripting.FileSystemObject")
T = fso.OpenTextFile(D).ReadAll
T = Replace(T, vbCrLf & "IM", vbCrLf & vbCrLf & "STOP*" & vbCrLf & "IM")
T = Replace(T, "|",vbCrLf & vbCrLf)
T = Replace(T, "+++++++ Lösung +++++++", "LÖSUNG:" & vbCrLf)
T = Replace(T, "+ ", "")
T = Replace(T, "): ", "):" & vbCrLf)
Set rE = New RegExp
rE.Global = True
rE.Pattern = "(\d\d\.\d\d\.\d\d\d\d \d\d\:\d\d\:\d\d)"
fso.CreateTextFile(D).Write rE.Replace(T, vbCrLf & vbCrLf & "$1")
Bis letzte Woche hat es noch ohne Probleme funktioniert, aber seit heute Splittet er dieses nicht mehr entsprechend.
D.h. er teilt die Datei zwar entsprechend |; (ISH. ect. auf
nur bei IMXXXXX und einem Absatz setzt er nicht mehr das STOP
Zeile: T = Replace(T, vbCrLf & "IM", vbCrLf & vbCrLf & "STOP*" & vbCrLf & "IM")
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Kommentar vom Moderator Dani am 06.01.2011 um 09:59:45 Uhr
Formatierung hinzugefügt.
Content-ID: 158080
Url: https://administrator.de/contentid/158080
Ausgedruckt am: 23.11.2024 um 08:11 Uhr
11 Kommentare
Neuester Kommentar
Hallo svenac2010!
Eingabe-Beispiele hast Du angegeben, aber wie soll das Ergebnis Aussehen?
Ist etwas schwierig, dass anhand Deines Codes herauszufinden, zumal der ja - wie Du schreibst - eh nicht mehr funktioniert
Gruß Dieter
PS. Und setze Dein Eingabe-Beispiel in Code-Tags (siehe Formatierungshilfe), damit alle Text- und Steuerzeichen erhalten bleiben...
Eingabe-Beispiele hast Du angegeben, aber wie soll das Ergebnis Aussehen?
Ist etwas schwierig, dass anhand Deines Codes herauszufinden, zumal der ja - wie Du schreibst - eh nicht mehr funktioniert
Gruß Dieter
PS. Und setze Dein Eingabe-Beispiel in Code-Tags (siehe Formatierungshilfe), damit alle Text- und Steuerzeichen erhalten bleiben...
Hallo svenac2010!
Das gepostete Script erzeugt aus den geposteten Daten (auszugsweise)
- insofern kann ich das Problem nicht nachvollziehen ...
@Dieter
findest Du (etwas) mehr dazu ...
Grüße
bastla
Das gepostete Script erzeugt aus den geposteten Daten (auszugsweise)
...
Transfer to ISH.FWGSGDD with request for processing.
STOP*
IM6262626
fdhdfh hthzhsfjrtsjsj
LÖSUNG:
...
@Dieter
findest Du (etwas) mehr dazu ...
Grüße
bastla
Hallo svenac2010!
Versuchs mal hiermit:
Wobei mir u.a. nicht klar ist, ob's jetzt 7x(+)-Zeichen - wie im Code - oder 8x(+)-Zeichen - wie in Deinem Beispiel - sind?
Gruß Dieter
[edit] geändert [/edit]
Versuchs mal hiermit:
If WScript.Arguments.Count < 1 Then
WScript.Echo "Keine Textdatei als Paramter übergeben!": WScript.Quit 1
End If
Path = WScript.Arguments(0)
Set Re = New RegExp
Set Fso = CreateObject("Scripting.FileSystemObject")
Text = Fso.OpenTextFile(Path).ReadAll
Re.Global = True
Re.Pattern = "(IM\d+\|)"
Text = Re.Replace(Text, vbCrLf & vbCrLf & "STOP*" & vbCrLf & "$1")
Re.Pattern = "(\d+.\d+.\d+ \d+:\d+:\d+)"
Text = Re.Replace(Text, vbCrLf & vbCrLf & "$1")
'Suchen, Ersetzen (# steht für vbCrLf)
ReplaceText = Array("|", "##", _
"+++++++ Lösung +++++++ ", "LÖSUNG:#", _
"(ISH.", "##(ISH.", _
"): ", "):##" _
)
For i = 0 To UBound(ReplaceText) Step 2
Text = Replace(Text, Replace(ReplaceText(i), "#", vbCrLf), Replace(ReplaceText(i + 1), "#", vbCrLf))
Next
Fso.CreateTextFile(Path).Write Text
Gruß Dieter
[edit] geändert [/edit]
Hallo Sven!
Neuer Versuch Den letzten Code habe ich entsprechend geändert.
Gruß Dieter
Neuer Versuch Den letzten Code habe ich entsprechend geändert.
Gruß Dieter
Hallo Sven!
Gruß Dieter
Zitat von @svenac2010:
Keine Ahnung was mal wieder geändert wurde, aber ich denke so wird das Script erstmal wieder ohne Probleme laufen.
Naja, anstatt - wie vorher - nach vbCrLf & "IM" zu suchen, weil eine Suche nach nur "IM" ziemlich unsicher ist, wird jetzt explicit nach "IM#|" gesucht, wobei die Anzahl der Zahlen (#) variabel sein darf.Keine Ahnung was mal wieder geändert wurde, aber ich denke so wird das Script erstmal wieder ohne Probleme laufen.
Auf jedenfall eine ganz herzlichen Dank für die Hilfe.
Yepp, gern geschehenGruß Dieter