Batch Eintrag nach ; aus txtx löschen

thron

Cadet 3rd Year
Registriert
März 2017
Beiträge
60
Hallo an alle,

habe eine Frage und komme nicht weiter. Ich habe eine batch-Datei die in einer txt-Datei nach einem zwei Einträgen sucht. Das passt alles soweit. Jetzt möchte ich aber, dass wenn die Einträge gefunden wurden, dass einer davon gelöscht wird.

for /F "tokens=1,2 delims=;" %%a in (D:\san\car.txt) do if %fin% == %%a set z=%%b & goto found

Wenn die "fin" gefunden wurde und somit auch der Eintrag nach dem Semikolon, dann soll der Eintrag nach dem Semikolon welcher jetzt in der Variable %z% aus der TXT-Datei gelöscht werden.

Wie stelle ich das an?

Viele Dank an alle schon im Voraus und einen guten Wochenstart.
 
Alles, außer eben die Einträge, die du löschen willst, mittels echo in ein neues Dokument schreiben.
Also jede Zeile in das neue Dokument leiten, außer dort, wo du einen Treffer hast. Dort nur %%a in das neue Dokument leiten.
 
Aber dann habe ich ja zwei txt-Dateien oder ersetzt er diese. Gibt es keine Möglichkeit einfach alles nach dem ; für diese Zeile zu löschen?

Gruß
 
Alte Datei löschen, neue Datei mit selbem Namen erstellen bzw. umbenennen.
Soweit ich weiß, gibt es rein in Batch keine Möglichkeit zu sagen, dass du aus einer Textdatei an bestimmter Stelle Zeichen löschen willst.
Da müsstest du dann zu anderen Tools (evtl. mit Powershell oder auch bspw. Excel oder Perl) greifen.

Aber die von mir beschriebene Methode führt letztlich zum selben Ergebnis.

Hier mal ein Beispiel:
Code:
@echo off
if exist new.txt del new.txt

for /F "tokens=1,* delims=;" %%a in (liste.txt) do (
if FINDEN==%%a (
	echo %%a>>new.txt
) else (
	echo %%a;%%b>>new.txt
))
Hier werden allerdings Leerzeilen nicht übernommen, weil for /F diese ignoriert.
 
Zurück
Oben