flohooo
Goto Top

Bestimmte Inhalte einer Textzeile in .txt löschen

Einen wunderschönen wünsche ich ...

Ich hab ein Problem was es zu lösen gilt und trotz der hier schon so zahlreich vorhandenen Lösungen für so viele verschiedenen Dinge ist leider noch nichts dabei gewesen was mir wirklich weiterhelfen würde... *lufthol*

Und zwar geht es darum das ich einige .txt Dateien bekomme die wie folgt aufgebaut sind:

ABCD5 Efgh ijk {12a345678910111213} AB_CDEF (Z) . GHIJ KLMN. Xyz: 12-34567-8, IWD: 01 020304 0506070809

die komplette Datei ist untereinander mit solchen Textzeilen voll.
Um damit weiterarbeiten zu können ist es erforderlich dass das
"Xyz:" in einer Ausgabedatei am Anfang der Zeile steht.

Alles was davor steht, soll gelöscht werden.
Da es sich um ein paar Dateien mehr handelt wäre eine Batch, die das ganze automatisch für mich macht natürlich hilfreich, wenns denn möglich ist!

Praktisch wäre es natürlich wenn ich die Dateien aus einem Ordner in einem Rutsch aufgreifen
und in einem anderen Ordner als Ausgabedatei wieder abgespeichert bekäm.

Also, ich weiß nicht wie schwer das wird, ich hab es nicht geschafft, nun seid ihr dran = D

Hoffentlich .... face-wink


Gruß

Flo

Content-ID: 124985

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

Ausgedruckt am: 18.11.2024 um 06:11 Uhr

60730
60730 15.09.2009 um 14:30:04 Uhr
Goto Top
Servus,

das ist einfach, mit einer For Schleife den Text durchsuchen, als Delims Xyz: , alles (variable einz nicht, nur Variable 2 in eine neue Datei) und das wars.

Gruß

For /?
Flohooo
Flohooo 15.09.2009 um 15:17:18 Uhr
Goto Top
danke erstmal,

aber wie soll das ganze denn bitte aussehen?
oder sollte ich vorweg sagen das ich im moment gar keine Ahnung habe? =D
Biber
Biber 15.09.2009 um 15:47:52 Uhr
Goto Top
Moin Flohooo,

willkommen im Forum.

Versuch als Skizze dieses:
:----- snipp flohooo.cmd ---
@echo off & setlocal
FOR /F "Delims=" %%i in (e:\schnipsel\Flohooo.txt) do Set "line=%%i" && call:Processline  
goto :eof

:Processline
Set "tmpline=%line:xyz:=§%"  
FOR /F "tokens=2* delims=§" %%i in ("%tmpline%") do echo xyz:%%i  
goto :eof
:----- snapp flohooo.cmd ---
...wobei Du das "e:\schnipsel\Flohooo.txt" durch Deine Dateiangaben ersetzen musst
.. ggf. das "§"-Zeichen, das ich als Delimiter verwende (weil es in normalen Texten eher selten vorkommt) variieren musst.

Die jetzige Bildschirmausgabe des flohooo.cmd kannst du mit ">x:\yz\neueDatei.txt" in eine neue Datei umleiten.

Grüße
Biber
da-chiller
da-chiller 15.09.2009 um 15:59:10 Uhr
Goto Top
Am einfachsten kann man Dateinamen gesammelt in der Console umbenennen.

In die Kommandozeile (Eingabeaufforderung) wechseln (je nach Betriebssystem anders zb Start->Ausführen: "cmd"), in den entsprechenden Ordner mit den .txt-Dateien wechseln und folgenden Befehl eingeben:

copy *Xyz:*.txt c:\Zielverzeichnis\Xyz*.txt

Wichtig sind natürlich die Sternchen, sie gelten als Platzhalter für alles was - in diesem Fall - vor und hinter dem "Xyz:" steht. Du musst allerdings auch darauf achten, dass die Zeichenfolge Xyz: sonst nirgends in dem Dateinamen auftaucht, sonst gibts Verwirrungen!!!

Das sollte funktionieren. Allerdings hab ich das jetzt nicht großartig getestet. Am besten vorher mal mit einer Sicherungskopie deiner txts ausprobieren...
bastla
bastla 15.09.2009 um 18:18:37 Uhr
Goto Top
... bzw etwas schlanker face-wink:
:----- snipp flohooo.cmd ---
@echo off & setlocal
FOR /F "Delims=" %%i in (e:\schnipsel\Flohooo.txt) do Set "line=%%i" && call:Processline  
goto :eof

:Processline
echo xyz:%line:*xyz:=%
goto :eof
:----- snapp flohooo.cmd ---

@Biber
Eigentlich hätte ich als (Deine) Zeile 8 erwartet:
FOR /F "tokens=1* delims=§" %%i in ("%tmpline%") do echo xyz:%%j
was aber auch schon egal wäre, wenn "xyz:" mehrfach vorkäme ...

Grüße
bastla
Biber
Biber 15.09.2009 um 18:46:55 Uhr
Goto Top
Moin bastla,

Eigentlich hätte ich als (Deine) Zeile 8 erwartet:..
Hast natürlich Recht.... ich hatte es nur als (eine etwas längere) Zeile flüchtig am CMD-Prompt zusammengeschrotet als proof-of-concept und mich dann bei der Nacherzählung als Mini-Batch so darauf konzentrieren müssen, dass ich auch jedes der vielen %-Zeichen verdoppele.... da hab ich wohl ein bisschen an der Ästhetik eingespart...face-wink

Außerdem... ich denke, es freut Dich ja auch, anderen etwas über Verschlankungen weitergeben zu können face-wink

Grüße
Biber
bastla
bastla 15.09.2009 um 18:53:53 Uhr
Goto Top
[OT]
@Biber
Außerdem... ich denke, es freut Dich ja auch, anderen etwas über Verschlankungen weitergeben zu können face-wink
Anderen schon ... face-wink
[/OT]

Grüße
bastla
Flohooo
Flohooo 16.09.2009 um 08:51:58 Uhr
Goto Top
Guten morgen,

vielen vielen Dank ersteinmal.

Biber, dein Vorschlag hat direkt funktioniert, bekomme in der cmd direkt mein gewünschtes Ergebnis geliefert.

Allerdings gibt es komischerweise Probleme mit der Ausgabe.
Wollte das Ergebnis ja in einer weiteren .txt gespeichert haben, aber egal was ich versuche ... es funktioniert nicht = (


Edit:

mit > c:\xy\z
bekomme ich immer nur die letzte ausgewertete Zeile der cmd in die neue .txt geschrieben.
Aber ich will ja alle drin stehen haben ^^


Edit2:

Ahhhh ich habs schon, der >> machts ;) = D

Dankeee!!!