derfragende
Goto Top

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

Content-Key: 77756

Url: https://administrator.de/contentid/77756

Printed on: April 24, 2024 at 00:04 o'clock

Member: bastla
bastla Jan 10, 2008 at 15:40:36 (UTC)
Goto Top
Hallo derfragende und willkommen im Forum!

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"  
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:
set "SuchString= ## such wort ## "  
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
echo [%SuchString%]
testen kannst.

Grüße
bastla
Member: derfragende
derfragende Jan 11, 2008 at 13:06:57 (UTC)
Goto Top
Vielen Dank !!!! face-smile