im batch nach inhalt suchen und löschen...
meine frage ist wie kann ich nach einem bestimmten wort suchen innerhalb eines dokuments!?
ein beispiel:
REM Suchstring
SET string= " ## such wort ## "
also es soll auch die dokumente löschen wo es drin vor kommt.
Bedanke mich im voraus
ein beispiel:
REM Suchstring
SET string= " ## such wort ## "
also es soll auch die dokumente löschen wo es drin vor kommt.
Bedanke mich im voraus
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 77756
Url: https://administrator.de/forum/im-batch-nach-inhalt-suchen-und-loeschen-77756.html
Ausgedruckt am: 30.04.2025 um 13:04 Uhr
2 Kommentare
Neuester Kommentar
Hallo derfragende und willkommen im Forum!
Suchen kannst Du mit "findstr", zum Löschen der den Suchstring enthaltenden Dokumente kannst Du etwa so vorgehen:
Gesucht wird (wegen des "/s") auch in allen Unterordnern des Startpfades, wobei exakte Übereinstimmung (auch hinsichtlich Groß-/Kleinschreibung) verlangt wird. Soll Groß-/Kleinschreibung nicht beachtet werden, musst Du zusätzlich den Schalter "/i" verwenden (siehe auch "findstr /?").
Entweder schreibst Du den Startpfad (wie im Beispiel oben) ohne "\" am Ende (auch wenn eigentlich "D:\" gemeint ist), oder immer mit "\" und musst dafür im Gegenzug den "\" zwischen %StartPfad% und %DateiMaske% entfernen. Dritte Möglichkeit: Pfad und Maske in einer Variablen zusammenfassen und nur diese für "findstr" verwenden.
Wegen des "echo" wird der Löschbefehl nur angezeigt, aber nicht ausgeführt - wenn der Test zufriedenstellend verlaufen ist, einfach das "echo" entfernen ...
Abschließend noch ein Hinweis zur Zuweisung des Wertes zur Variablen %string% in Deinem Beispiel: Wenn Du nach dem "=" ein Leerzeichen schreibst, wird dieses ebenso in der Variable gespeichert wie die Anführungszeichen. Alternativ dazu die oben verwendete Schreibweise:
Hier enthält die Variable tatsächlich nur jeweils eine Leerstelle am Beginn und am Ende und keine Anführungszeichen, was Du durch eine zusätzliche Zeile der Art
testen kannst.
Grüße
bastla
Suchen kannst Du mit "findstr", zum Löschen der den Suchstring enthaltenden Dokumente kannst Du etwa so vorgehen:
@echo off & setlocal
rem StartPfad ohne abschließenden \ angeben!
set "StartPfad=D:"
set "DateiMaske=*.txt"
set "SuchString= ## such wort ## "
for /f "delims=" %%i in ('findstr /s /m /c:"%SuchString%" "%StartPfad%\%DateiMaske%"') do echo del "%%i"
Entweder schreibst Du den Startpfad (wie im Beispiel oben) ohne "\" am Ende (auch wenn eigentlich "D:\" gemeint ist), oder immer mit "\" und musst dafür im Gegenzug den "\" zwischen %StartPfad% und %DateiMaske% entfernen. Dritte Möglichkeit: Pfad und Maske in einer Variablen zusammenfassen und nur diese für "findstr" verwenden.
Wegen des "echo" wird der Löschbefehl nur angezeigt, aber nicht ausgeführt - wenn der Test zufriedenstellend verlaufen ist, einfach das "echo" entfernen ...
Abschließend noch ein Hinweis zur Zuweisung des Wertes zur Variablen %string% in Deinem Beispiel: Wenn Du nach dem "=" ein Leerzeichen schreibst, wird dieses ebenso in der Variable gespeichert wie die Anführungszeichen. Alternativ dazu die oben verwendete Schreibweise:
set "SuchString= ## such wort ## "
echo [%SuchString%]
Grüße
bastla