Textdatei löschen wenn bestimmer Inhalt fehlt
Hallo,
ist es möglich über eine Batchdatei folgendes zu realisieren:
Eine Textdatei enthält diverse Daten. Davon gibt es 50 Stück täglich. Über eine Batch soll überprüft werden, wenn folgender Text z. B. "ABC123" nicht enthalten ist, soll diese komplette Textdatei gelöscht werden. Überall wo dieser Zeichensatz enthalten ist, soll nichts passiern.
Wie könnte die Batch aussehen? Vielen Dank jetzt schon mal.
ist es möglich über eine Batchdatei folgendes zu realisieren:
Eine Textdatei enthält diverse Daten. Davon gibt es 50 Stück täglich. Über eine Batch soll überprüft werden, wenn folgender Text z. B. "ABC123" nicht enthalten ist, soll diese komplette Textdatei gelöscht werden. Überall wo dieser Zeichensatz enthalten ist, soll nichts passiern.
Wie könnte die Batch aussehen? Vielen Dank jetzt schon mal.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 85674
Url: https://administrator.de/contentid/85674
Ausgedruckt am: 22.11.2024 um 18:11 Uhr
5 Kommentare
Neuester Kommentar
Hallo m4dddd!
Eigentlich genügt dafür eine Zeile:
Falls sich auch andere Dateien im selben Ordner befinden sollten, wäre zu überlegen, wie sich die Dateiauswahl auf die "richtigen" beschränken lässt, etwa "D:\Dein Ordner\ABC*.txt" - dies insbesondere, wenn es noch andere ".txt"-Dateien gibt.
Zur Sicherheit steht in der obigen Zeile ein "@echo" vor dem Löschbefehl - so werden die zu löschenden Dateien nur angezeigt. Wenn Du wirklich löschen willst, das "@echo" einfach entfernen.
Zum Testen ist es übrigens sinnvoll, den Batch direkt von der Kommandozeile zu starten, oder als zweite Zeile "@pause" hinzuzufügen.
Grüße
bastla
Eigentlich genügt dafür eine Zeile:
@for %%i in ("D:\Dein Ordner\*.txt") do @findstr "ABCD123" "%%i">nul || @echo del "%%i%
Zur Sicherheit steht in der obigen Zeile ein "@echo" vor dem Löschbefehl - so werden die zu löschenden Dateien nur angezeigt. Wenn Du wirklich löschen willst, das "@echo" einfach entfernen.
Zum Testen ist es übrigens sinnvoll, den Batch direkt von der Kommandozeile zu starten, oder als zweite Zeile "@pause" hinzuzufügen.
Grüße
bastla
Moin m4dddd,
geringfügige Variation von bastlas Lösung, hier zum Test am CMD-Prompt:
Findstr /m gibt nur die Dateinamen (incl.Pfad) der Dateien aus, die den Suchtext enthalten.
Auch hier gilt: wenn es pass, nach dem testen das "@echo" weglassen.
Grüße
Biber
geringfügige Variation von bastlas Lösung, hier zum Test am CMD-Prompt:
@for /f "delims=" %i in ('findstr /m /i "ABCD123" "D:\Dein Ordner\*.txt"') do @Echo del "%i"
Findstr /m gibt nur die Dateinamen (incl.Pfad) der Dateien aus, die den Suchtext enthalten.
Auch hier gilt: wenn es pass, nach dem testen das "@echo" weglassen.
Grüße
Biber
@Biber
"/m" wollte ich eigentlich auch verwenden, allerdings mit "/v" (weil: "wenn folgender Text z. B. "ABC123" nicht enthalten ist, soll diese komplette Textdatei gelöscht werden") - scheint aber in dieser Kombination nicht zu funktionieren ...
Grüße
bastla
"/m" wollte ich eigentlich auch verwenden, allerdings mit "/v" (weil: "wenn folgender Text z. B. "ABC123" nicht enthalten ist, soll diese komplette Textdatei gelöscht werden") - scheint aber in dieser Kombination nicht zu funktionieren ...
Grüße
bastla
@bastla
...uuuuuuuuuppps... das "nicht enthalten" hatte ich in der Tat überlesen.
....ja, ich weiß, ich hätte ja auch auf die Überschrift schauen können....
Und ja - die Kombination von "/m" und "/v" ist NICHT vorgesehen und mangels Nachfrage wohl auch nicht in der Planung bei diesen Redmonder Hoffnungsträgern.
Also bitte meinen Exkurs oben als "Off Topic" gedanklich ausblenden oder auf /IGNORE setzen.
Grüße
Biber
...uuuuuuuuuppps... das "nicht enthalten" hatte ich in der Tat überlesen.
....ja, ich weiß, ich hätte ja auch auf die Überschrift schauen können....
Und ja - die Kombination von "/m" und "/v" ist NICHT vorgesehen und mangels Nachfrage wohl auch nicht in der Planung bei diesen Redmonder Hoffnungsträgern.
Also bitte meinen Exkurs oben als "Off Topic" gedanklich ausblenden oder auf /IGNORE setzen.
Grüße
Biber