Batch: Bestimmte Zeile aus einer TxT Datei löschen?

2 Antworten

ohne viel Tralala:

https://ss64.com/nt/find.html

@echo off
setlocal enableDelayedExpansion
  rem wichtig sorgt für richtige Umlaute
chcp 65001>nul

set "search=Petersen"
 rem adressdatei:
set "adressFile=Adressbuch.txt"

 rem nur Demo
 rem recycling.... bla und Blub wie gehabt eine Adressdatei
echo "Vorname","Nachname","PLZ","Stadt","Straße","Hausnr.","TelefonNr.","Notizen" >"%adressFile%"
echo "Peter","Dirks","01255","Berlin","Musterstr.","85","017123456","Hört schwer, sieht genauso gut">>"%adressFile%"
echo "Manni","Petersen","47120","Köln","Musterstr.","108","0158765","Notorischer Säufer,Kiffer,Polofahrer" >>"%adressFile%"
echo "Hans Peter","Meier","12345","Mainz","Am Klöppel","3","08005555", >>"%adressFile%"
 rem erzeugen DemoCSV ende

echo Originaldatei:
type "%adressFile%"
echo:
pause
echo:

::Das ganze Geheimnis besteht darin alle Datensätze außer dem zu löschenden neu zu schreiben
::ob man die mit Find, findstr oder einem einfachen if über die Verarbeitung der eingelesenen Zeilen entscheidet ist Wurst---
  
 rem in der Einfachsten Form:
 rem von Adressbuch eine Sicherungsdatei erstellen 
copy "%adressFile%" "%adressFile%.bak" >nul
 rem original Adressbuch leeren....
 (call )>"%adressFile%"
 rem Sicherungsdatei (und damit das Original) einlesen:
for /f "usebackq tokens=* delims=" %%a in ("%adressFile%.bak") do (
   rem die folgende Zeilen ist Demo und zeigt Dir was in die neue Datei geschrieben wird
  echo %%~a|find /i /v "%search%"
  echo:

   rem diese Zeile schreibt alles außer die Zeile mit dem Suchbegriff in die Adressdatei
  echo %%~a|find /i /v "%search%">>"%adressFile%"
)

echo:
echo:
echo und weg ist der olle %search%...
echo Neu geschriebenes Adressbuch:
type "%adressFile%"
echo:

pause
Woher ich das weiß:eigene Erfahrung – Ich mach das seit 30 Jahren

Ich denke zum einen, dass es sowas nicht gibt und zum andereen es von der Bedienung her einfacher wäre, mit einem Texteditor "auf Sicht" druüberzugehen und die Zeilen so zu löschen.

Erzesel  20.05.2019, 21:24

gibts nich gibts nich... einfach mal überlegen... wenn man alles schreibt, außer das was man löschen will, ist das zu Löschende gelöscht😵😵😵🤦‍♂️

Batch programmieren bedeutet auch Querdenken...

In anderen Programmiersprachen läuft die Verarbeitung von Textdatein in gleicher Weise... (nur das man das ganze im Speicher erledigt, statt life zuschreiben)

.... her einfacher wäre, mit einem Texteditor "auf Sicht" druüberzugehen und die Zeilen so zu löschen.

Wäre es sicher, aber dabei lernt man nicht Batch programmieren...

aus anderen Gründen würde ich mich ganicht mit Fingerübungen, wie diesen hier, abgeben. Ist doch prima, wenn jemand sich hinsetzt und versucht ein kleines Programm vom Punkt 0 an zu entwickeln. Dabei gibt es wesentlich einfachere Programmiersprachen als Batch...

(AnonymBatch hat noch nicht die Tücken von Batch kennengelernt)😱😱😱😩😩😩

1