Hallo,
via Batch und einem VBS durchlaufe ich aus PDf generierte Textdateien u.a. mit dem Ziel die dateien zu klassifizieren.
Eine Liste zu erstellen, die besagt, welches "Produkt" sich in welcher Datei befindet bekomm' ich mit Findstr. ganz gut hin und mit ein wenig Regex bekomme ich die leiste auch weit gehend bereinigt.
Was mir jedoch noch fehlt und ich keinen richtigen Ansatz finde ich zum Einen
- jede Zeile zum Beginn (pauschal) und am Ende (indiviuell) zu kürzen
und zum Anderen
- die "doppelten" Zeilen (ergibt sich aus Dateinamen) zu löschen
Hierzu habe ich bislang folgenden Code
a) Batch
b) VBS
Versuchweise habe ich zum Beginn des Script mal
eingefügt.
Das funktioniert auch aber eben nur für eine Zeile!
funktioniert nicht!
(10 ich nur ein Beispiel)
Ich gehe mal davon aus, daß die Datei zeilenweise eingelesen werden muß, um zuerst den kompletten String zu kürzen und anschließen den RegexTeil auszuführen.
Würd' mich freuen wenn mir jemenad weiterhelfen kann.
LG
_opiwahn_
via Batch und einem VBS durchlaufe ich aus PDf generierte Textdateien u.a. mit dem Ziel die dateien zu klassifizieren.
Eine Liste zu erstellen, die besagt, welches "Produkt" sich in welcher Datei befindet bekomm' ich mit Findstr. ganz gut hin und mit ein wenig Regex bekomme ich die leiste auch weit gehend bereinigt.
Was mir jedoch noch fehlt und ich keinen richtigen Ansatz finde ich zum Einen
- jede Zeile zum Beginn (pauschal) und am Ende (indiviuell) zu kürzen
und zum Anderen
- die "doppelten" Zeilen (ergibt sich aus Dateinamen) zu löschen
Hierzu habe ich bislang folgenden Code
a) Batch
PHP:
@echo off & setlocal
set root=%~dp0
set inp=%~dp0input\
set out=%~dp0output\
set sto=%~dp0store\
set wks=%~dp0temp\
set pro=%~dp0prog\
set uti=%pro%utils\bin\
for %%f in (%inp%*.pdf) do (
%pro%pdf2text -layout %%f & move %%f %sto% & move %inp%*.txt %wks%
)
FINDSTR /G:"%pro%product.txt" %wks%*.txt > "%wks%tmp.tmp"
cscript //nologo "%pro%cleanprolist.vbs" "%wks%tmp.tmp" "%out%prolist.txt"
pause
rem del %wks%*.* /q
b) VBS
PHP:
InFile = WScript.Arguments(0)
OutFile = WScript.Arguments(1)
Set fso = CreateObject("Scripting.FileSystemObject")
If fso.GetFile(InFile).Size = 0 Then
fso.CreateTextFile(OutFile)
WScript.Quit
End If
T = fso.OpenTextFile(WScript.Arguments(0)).ReadAll
With New RegExp
.Global = True
.IgnoreCase = True
.Multiline = True
.Pattern = "[. ]{2,}"
T = .Replace(T, " ")
.Pattern = "( | :|,|;|Text|01|Name of|Product|Page)"
T = .Replace(T, "")
.Pattern = "[:]{2,}"
T = .Replace(T, ";")
End With
fso.CreateTextFile(WScript.Arguments(1), True).Write(T
Code:
T = Right(T, Len(T) - 26)
Das funktioniert auch aber eben nur für eine Zeile!
Code:
T = Left(T, Len(T) - 10)
(10 ich nur ein Beispiel)
Ich gehe mal davon aus, daß die Datei zeilenweise eingelesen werden muß, um zuerst den kompletten String zu kürzen und anschließen den RegexTeil auszuführen.
Würd' mich freuen wenn mir jemenad weiterhelfen kann.
LG
_opiwahn_
Zuletzt bearbeitet: