Batch: Bestimmte Zeile aus einer TxT Datei löschen?
Hallo,
ich bearbeite momentan mein Adressbuch Programm, nun will ich gerne veraltete Kontakte aus der Liste löschen. Meine Idee wäre das ich die Zeile mit den alten Kontaktdaten auslese mit dem Find befehl und das Ergebnis dann irgendwie lösche
set /p "suche=Vor und Zuname eingeben : "
find /i "%suche%" "adressbuch.txt" REM z.B.irgendwie delete oder so (habe kaum Ahnung von Batch)
Ich hoffe Ihr könnt mir etwas weiter helfen.
2 Antworten
ohne viel Tralala:
@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
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.
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)😱😱😱😩😩😩