77575
Goto Top

mehrer Textdateien nach strings durchsuchen und wenn gefunden zeile löschen

hallo an alle,

habe schon die meisten beiträge die meinem gesuch ähnlich sind gelesen, aber bin noch nicht auf eine lösung gekommen.
ich möchte in mehreren textdateien nach mehreren strings suchen und wenn so ein string gefunden wurde die ganze zeile löschen. ich möchte die strings nach denen ich suche in einer seperaten textdatei definieren, so das man diese jederzeit erweitern kann.

hier ein beispiel:

meine datei mit den string definitionen:
2007 Microsoft Office
Java(TM)
Microsoft .NET Framework
Microsoft Office 2003
NVIDIA Drivers
Roxio Creator
Security Update for Windows Internet
Update for Office
Windows Genuine
Yahoo! Toolbar
max mustermann
rechnername: pc834554
notepad++
adobe activex

usw. usw.
diese datei kann durchaus mehrer hundert zeilen enthalten.

dann gibt es einen ordner in dem viele textdateien liegen, in denen ich nach den strings oder teilen davon suchen will und wenn gefunden die ganze zeile löschen. egal an welcher stelle der string steht, egal ob am anfang der zeile oder mittendrin.
es soll z. beispiel jede zeile gelöscht werden die den string "Security Update for Windows" enthält.
es könne auch sonderzeichen wie + -- oder / in den zeilen enthalten sein.

ich hab schon for schleifen probiert , bekomm es aber nicht hin.

ich hoffe ich kann das mit cmd script machen, den vb kann ich noch weniger.

gruss j.

Content-ID: 116201

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

Ausgedruckt am: 25.11.2024 um 02:11 Uhr

77559
77559 16.05.2009 um 09:15:05 Uhr
Goto Top
Zitat von @77575:
Willkommen im Forum 01-01-01 oder j.

Schau dir in einem CMD Fenster mal die /V /I und /G Optionen des Findstr Befehls an:
Findstr /?

Das Löschen von Zeilen per Batch geschieht eigentlich immer durch neu schreiben und dabei weglassen.

Damit nicht jede Datei neu geschrieben werden muss, würde ich per Schleife die Dateien testen ob Suchbegriffe vorkommen,
wen nnicht - nächster
wenn ja, das Original umbenennen in bak und das gefiltertete Ergebnis in den Originalnamen schreiben.

:: StripDefinitions.cmd ::::::::::::::::::::::::::::::::::::::::::::
@Echo off&SetLocal 
Set Basis=D:\Test\5
Set Defi=D:\Test\Suchen.txt
Set Dateien=*.cmd
:: Set Variablen oberhalb anpassen.
Pushd %Basis%
For /F "Delims=" %%A in ('Dir /B /S /A-D "%Dateien%" '  
  ) Do findstr /I /G:%Defi% "%%A">NUL 2>&1 &&Call :Process "%%~fA"  
Popd
Goto :eof
:Process -----------------------------------------------------------
Echo Bearbeite: %~1
If Exist "%~dpn1.Bak" Del /Q "%~dpn1.Bak" >NUL 2>&1   
Ren %1 "%~n1.Bak"   
findstr /I /V /G:%Defi% "%~dpn1.Bak" >%1  
:: start "" /Wait Winmerge %1 "%~dpn1.Bak" & Pause 
:: StripDefinitions.cmd ::::::::::::::::::::::::::::::::::::::::::::

Wenn das sehr empfehlenswerte Vergleichstool WinMerge auf dem Rechner vorhanden ist, kann man nach auskommentieren der vorletzten Zeile sehr genau und übersichtlich sehen was in den Dateien geändert wurde.

Gruß
LotPings
bastla
bastla 16.05.2009 um 11:32:40 Uhr
Goto Top
@77559: Nur interessehalber: Wozu das "/Q" beim "Del"-Befehl?

Grüße
bastla
77559
77559 16.05.2009 um 12:31:48 Uhr
Goto Top
Zitat von @bastla:
Nur interessehalber: Wozu das "/Q" beim "Del"-Befehl?
Eine hier überrflüssige, in Fleisch und Blut übergegangene Gewohnheit face-wink

Gruß
LotPings
77575
77575 16.05.2009 um 18:27:27 Uhr
Goto Top
hallo LotPings,

du hast mein wochenende gerettet.
das funktioniert einwandfrei.
und das per cmd und läuft total schnell.

super, 1000 dank!!!!

gruss j.
127103
127103 18.02.2016 um 15:35:40 Uhr
Goto Top
Hallo.

funktioniert so bei mir nicht.

Also mit angepassten Variablen....

L.G.
TlBERlUS
TlBERlUS 18.02.2016 um 15:46:54 Uhr
Goto Top
Zitat von @127103:

Hallo.

funktioniert so bei mir nicht.

Also mit angepassten Variablen....

L.G.

Hi.

ich würde dir empfehlen, einen neuen Thread auzumachen. Leichenschändung von 7! Jahren alten Themen ist hier eher weniger gerne gesehen.
(mal abgesehen davon, dass deine Problembeschreibung eher unhilfreich ist)