SubString aus einer Textdatei ermitteln...
Hallo Freunde!
Vorsichtshalber stelle ich meine Anfrage mal hier rein -
unsere Admins werden es schon einordnen ;-)
Es geht darum,
einen bestimmten Textteil aus einer Textdatei herauszufiltern.
Genauer suche ich nach einer Möglichkeit,
ab einer beliebigen Position
eine bestimmte Anzahl von Zeichen herauszufiltern.
Als Beispiel:
Angenommen es steht folgender Test in einer
Zitat.txtZitat:
Protokoll der Überprüfung: keine ersichtlichen Mängel.
ab einschließlich Zeichenposition 28 ( K aus "keine") würde ich gerne 5 Zeichen ermitteln ( ---> keine)
(falls das erste Zeichen Position 0 (null) hätte, wäre es dann ab Zeichenposition 27).
dieses Zeichenfolge würde ich gerne als Bildschirmausgabe haben, um es dann in einer BATCH-Datei weiterverarbeiten zu können...
Ist so etwas ohne allzuviel Aufwand möglich?
Danke auf jeden Fall mal fürs Nachdenken :-)
LG
buzz
Antwort schreiben
Antwort 1 von katy vom 30.06.2020, 19:12 Options
Hallo buzz,
nachdenken könnte ich ja sicherlich (und neben mir einige andere Forumsteilnehmerinnen).
Aber du hast vergessen zu erwähnen, in welcher Umgebung das Script laufen soll, also insbesondere welche Scriptsprache und wohin die Ausgabe erfolgen soll.
Ohne das weiß ich nicht mal, ob mein Nachdenken dir überhaupt helfen kann.
katy
Antwort 2 von Bussard vom 30.06.2020, 19:28 Options
Hallo Katy !
Danke, Daß Du mich drauf aufmerksam machst!
Sorry! Das sollte eigentlich nicht passieren *duck*
Nun wenns möglich wäre, als VBS-Script,
aufrufbar in der DOS Command-Line unter WinXP.
LG buzz
Antwort 3 von Bussard vom 30.06.2020, 19:31 Options
Nachsatz.
Ausgabe als Bildschirmmeldung
oder als Datei falls es mit der Umleitung "> datei"
nicht so klappten sollte.
Antwort 4 von Seymour vom 01.07.2020, 19:15 Options
Hi buzz,
Zitat:
Angenommen es steht folgender Test in einer Zitat.txt
Der Inhalt besteht nur aus einer Zeile?
Soll die Position und die Länge jeweils neu eingegeben werden?
Versuche es zunächst erstmal mit den untenstehendem Script.
Die Pfade müssen eventuell angepasst werden.
Grüße Seymour
' Aufruf an der Eingabeaufforderung
' mit " Cscript //nologo meinscript.vbs >ausgabedatei.txt "
' Die erste Zeichenpositon ist 1
text="Zitat.txt"
a=28
b=5
Set Fso = CreateObject("Scripting.FileSystemObject")
Set tfile = fso.OpenTextFile(text, 1, True, 0)
txt = tfile.Readline
tFile.Close
wsh.echo mid(txt,a,b)
wsh.quit
Antwort 5 von Bussard vom 01.07.2020, 20:21 Options
Hallo Seymour!
Erstmals
Danke für Deine erneute Hilfe :-)
Zu deinen Rückfragen:
>Zur Zeit besteht der Text, den ich verarbeiten will, nur aus einer Zeile.
>Prinzipiell kann ich die Position und Länge des Textteiles manuell bestimmen,
Parameterübergaben aus der Eingabeaufforderung wären zwar nett aber nicht unbedingt notwendig.
Soweit klappt es ja auch schon,
ABER: zu meinem Bedauern habe
ich mich bei der Fragestellung
ungenau ausgedrückt.
Den Teilstring bekomme ich sehr wohl als Bildschirmausgabe,
allerdings hatte ich es eher als Meldung in der DOS-Eben gemeint.
SORRY ! eine
ausgabedatei.txt habe ich beim ersten Feldversuch NICHT erhalten
Wie aufwändig ist es, diesen ermittelten String im Speicher zu behalten, um ihn dann über die Eingabeaufforderung
ECHO %X-STRING%
auszugeben?
Ist das überhaupt realisierbar?
LG buzz
Antwort 6 von Seymour vom 01.07.2020, 20:47 Options
Zitat:
allerdings hatte ich es eher als Meldung in der DOS-Eben gemeint.
Das verstehe ich leider nicht so ganz.
Zitat:
eine ausgabedatei.txt habe ich beim ersten Feldversuch NICHT erhalten
Ich hatte das Script natürlich vorher getestet. Die Datei sollte sich in dem aktuellen Verzeichnis der Eingabeaufforderung befinden. Oder einfach eine Pfadbezeichnung angeben. "C:\test\ausgabedatei.txt"
Wenn ich dich richtig verstanden habe liefert "Cscript //nologo meinscript.vbs " den Ausgabestring ja schon.
Zitat:
Ist das überhaupt realisierbar?
Da bin ich im Augenblick überfragt. :-)
Grüße Seymour
Antwort 7 von Bussard vom 01.07.2020, 21:36 Options
Möglich, daß ich auf der Leitung stehe...*grins*
Ich habe das Programm mal
1 : 1 übernommenals VBS-Datei auf D:\ gespeichert.
Wenn ich
meinscript.vbs starte wird mir der herausgefilterte Text
in einem sich mittig im Bildschirm öffnenden Fester angezeigt,
- Windows Script Host -welches ich dann mit der [ OK ] Taste beenden kann.
auf D:\ wird mir denoch keine ausgabe.txt angelegt
*mal versuch von der Leitung herunter zu steigen* ' mit " Cscript //nologo meinscript.vbs >D:\ausgabedatei.txt "
habe ich da was mißverstanden?
ich glaub ich steh immer noch drauf *gDanke im Vorraus :-
)
Antwort 8 von Seymour vom 01.07.2020, 21:48 OptionsLösung
Zitat:
ich glaub ich steh immer noch drauf
:-))
Zitat:
Nun wenns möglich wäre, als VBS-Script,
aufrufbar in der DOS Command-Line unter WinXP.
Das Script wird in der Eingabeaufforderung ausgeführt.
Start - Ausführen.. cmd - OK klicken.
Auf Laufwerk D: wechseln.
Cscript //nologo meinscript.vbs >D:\ausgabedatei.txt
eingeben u. Enter. ;-)
Antwort 9 von Bussard vom 02.07.2020, 19:25 Options
Hallo Seymour!
Herzlichen Dank, daß Du mir den Weg von der Leitung gezeigt hast ;-)
Dein Script klappt exzellent - habe das Ergebnis, welches ich meinte!
*freu*
LG
buzz
Antwort 10 von Bussard vom 02.07.2020, 20:09 Options
ähm kurze Zusatzfragehätte ich noch...
wie müßte man das Script umbauen um eine der folgene Ausgaben zu erhalten
Varriante IDie Antwort ist
text fixe Ausgabe_A ...
Variante IItext ist okay
... fixe Ausgabe_B
Variante IIIDie Antwort
text ist korrekt
fixe Ausgabe_A ... fixe Ausgabe_B
Parameter a ist ja die Position, B ist die Länge des Teilstrings
textläßt sich die Ausgabe im Script weiter bearbeiten
nach dem Schema
Antwort = fixe Ausgabe_A +
text + fixe Ausgabe_B
(Überlegung: wenn ich eine der fixen Ausgeben nicht brauche, würde sich nicht allzuviel am Konzept ändern)
Mein Versuch
String = "fixe Ausgabe_A" + txt,a,b + "fixe Ausgabe_B"
führte zu einen Error :-(
Danke für Deine Geduld :-))
Antwort 11 von Seymour vom 02.07.2020, 20:22 Options
Hi buzz,
Ich hatte den Hinweis im Script zunächst für ausreichend gehalten, und bin gar nicht auf die Idee gekommen das du das Script mit Doppelklick starten würdest. :-)
Unten noch mal mit editierbarer Parameterübergabe.
Grüße Seymour
' Aufruf an der Eingabeaufforderung
' mit " Cscript //nologo meinscript.vbs >ausgabedatei.txt "
' Die erste Zeichenpositon ist 1
text="Zitat.txt"
astg=inputbox("Position","","28")
a=eval(astg)
bstg=inputbox("Länge","","5")
b=eval(bstg)
Set Fso = CreateObject("Scripting.FileSystemObject")
Set tfile = fso.OpenTextFile(text, 1, True, 0)
txt = tfile.Readline
tFile.Close
wsh.echo mid(txt,a,b)
wsh.quit
Antwort 12 von Seymour vom 02.07.2020, 20:31 Options
Oops, hab dein letztes Posting übersehen.
Das müsste dann lauten:
String = "fixe Ausgabe_A" & mid(txt,a,b) & "fixe Ausgabe_B"
Wenn ichs richtig verstanden habe. :-)
Antwort 13 von Bussard vom 04.07.2020, 19:20 Options
Sodala Seymour!
jetzt funktioniert alles so wie gewollt!
SUPER! *freu*
Herzlichen Dank :-)
LG buzz