online 1
gast (50)

/ Forum / Skripte(PHP,ASP,Perl...)

Skripte(PHP,ASP,Perl...)Skripte(PHP,ASP,Perl...)

Fragevon Bussard vom 30.06.2020, 18:21 Options

Lösung

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.txt
Zitat:

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 übernommen
als 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 *g

Danke im Vorraus :-)

Antwort 8 von Seymour vom 01.07.2020, 21:48 OptionsLösung

Lö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 I
Die Antwort ist text
fixe Ausgabe_A ...

Variante II
text ist okay
... fixe Ausgabe_B

Variante III
Die Antwort text ist korrekt
fixe Ausgabe_A ... fixe Ausgabe_B

Parameter a ist ja die Position, B ist die Länge des Teilstrings text

läß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

Ähnliche Themen

Wie kann man ein gescanntes Dokument in eine Textdatei umwandeln?
Ucky  15.05.2007 - 133 Hits - 5 Antworten

Ajax-Beispiel funktioniert nicht
magenta  24.05.2007 - 97 Hits - 1 Antwort

Textdatei Analysieren
Ralfman  19.04.2008 - 57 Hits - 2 Antworten

SUMMEWENN mit Substring
user3  21.04.2008 - 8 Hits - 2 Antworten

gescannter Briefes in eine Textdatei umwandeln
Sue_S.  15.05.2008 - 75 Hits - 20 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Mon Jan 26 01:23:17 2026