svenac2010
Goto Top

Argument in VBS Script funktiiert nicht mehr....

Hallo,

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 
Um mir die Files einzeln aufzugliedern verwende ich folgendes Script:
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")  
Was ist im Script falsch?
Kommentar vom Moderator Dani am Jan 06, 2011 um 08:59:45 Uhr
Formatierung hinzugefügt.

Content-Key: 158080

Url: https://administrator.de/contentid/158080

Printed on: April 25, 2024 at 21:04 o'clock

Mitglied: 76109
76109 Jan 06, 2011 at 07:32:07 (UTC)
Goto Top
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 funktioniertface-wink

Gruß Dieter

PS. Und setze Dein Eingabe-Beispiel in Code-Tags (siehe Formatierungshilfe), damit alle Text- und Steuerzeichen erhalten bleiben...
Member: svenac2010
svenac2010 Jan 06, 2011 at 08:41:20 (UTC)
Goto Top
Maßeblich ist eigentlich nur die Zeile

T = Replace(T, vbCrLf & "IM", vbCrLf & vbCrLf & "STOP*" & vbCrLf & "IM")

Hier soll wenn er im Textfile einen Absatz gefolgt von "IM" findet diesen
mit Absatzt, Absatz "STOP*" Absatz "IM" setzen

Beispiel:
IMXXXX dgwgg rgtawrzr erarezeraz
IMXXXX gergeragt geartera geterat

in:

IMXXXX dgwgg rgtawrzr erarezeraz


STOP*

IMXXXX gergeragt geartera geterat

alle anderen Einrückungen und Veränderungen führt er durch. Halt nur das WORT STOP setzt er als Erkennungsmarke nicht
Member: bastla
bastla Jan 06, 2011, updated at Oct 18, 2012 at 16:45:25 (UTC)
Goto Top
Hallo svenac2010!

Das gepostete Script erzeugt aus den geposteten Daten (auszugsweise)
...
Transfer to ISH.FWGSGDD with request for processing.

STOP*
IM6262626

fdhdfh hthzhsfjrtsjsj

LÖSUNG:
...
- insofern kann ich das Problem nicht nachvollziehen ...
@Dieter
findest Du (etwas) mehr dazu ...

Grüße
bastla
Mitglied: 76109
76109 Jan 06, 2011, updated at Oct 18, 2012 at 16:45:25 (UTC)
Goto Top
Hallo Baslta!

Zitat von @bastla:
@Dieter
findest Du (etwas) mehr dazu ...
Danke für den Hinweis!

Hatte ich mir anhand der Variablen-Bezeichnungen schon gedacht, dass das Skript von Dir istface-wink

@Dani
Nett von Dir, den Text/Code in Code-Tags zu setzenface-wink

Gruß Dieter
Member: svenac2010
svenac2010 Jan 06, 2011 at 12:53:36 (UTC)
Goto Top
Hallo, leider funktioniert es immer noch nicht.

Ich kann euch gern mal ein txt File zur verfügung stellen, welches umgewandelt werden soll.
Mitglied: 76109
76109 Jan 06, 2011 at 13:30:20 (UTC)
Goto Top
Hallo svenac2010!

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
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]
Member: svenac2010
svenac2010 Jan 06, 2011 at 13:57:51 (UTC)
Goto Top
Danke für die Antwort und für das Beispielscript.

Nach dem IM sind 8 weitere Stellen

im Test erzeugt er zwar ein STOP* beim ersten IM
setzt aber vorab 2 Umbrüche, danach ist aber beim nächsten IM UMbruch, kein STOP* mehr gesetzt.
Kann hier gern mal ein Beispiel File zukommen lassen, damit man den Inhalt der Datei besser versteht, wie der Aufbau ist.

Gruß Sven
Member: svenac2010
svenac2010 Jan 07, 2011 at 05:55:33 (UTC)
Goto Top
Ich denke es wurde hier intern an den Exportfile ( welches ich versuche mit STOP zu versehen) verändert.
ggf wäre für mich auch die Lösung nach folgendem String zu suchen

IMxxxxxxxx| (x=Zahl = Länge 8 Zeichen) und dieses dann mit
vbCrLf & vbCrLf & "STOP*" & vbCrLf & "IM" wie gehabt einzurücken
Mitglied: 76109
76109 Jan 07, 2011 at 07:57:34 (UTC)
Goto Top
Hallo Sven!

Neuer Versuchface-wink Den letzten Code habe ich entsprechend geändert.

Gruß Dieter
Member: svenac2010
svenac2010 Jan 07, 2011 at 10:12:30 (UTC)
Goto Top
Danke Dieter,
das hat wunderbar funktioniert..

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.

Gruß Sven
Mitglied: 76109
76109 Jan 07, 2011 at 10:48:46 (UTC)
Goto Top
Hallo Sven!

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.
Auf jedenfall eine ganz herzlichen Dank für die Hilfe.
Yepp, gern geschehenface-wink

Gruß Dieter