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-Key: 116201

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

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

Mitglied: 77559
77559 May 16, 2009 at 07:15:05 (UTC)
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
Member: bastla
bastla May 16, 2009 at 09:32:40 (UTC)
Goto Top
@77559: Nur interessehalber: Wozu das "/Q" beim "Del"-Befehl?

Grüße
bastla
Mitglied: 77559
77559 May 16, 2009 at 10:31:48 (UTC)
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
Mitglied: 77575
77575 May 16, 2009 at 16:27:27 (UTC)
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.
Mitglied: 127103
127103 Feb 18, 2016 at 14:35:40 (UTC)
Goto Top
Hallo.

funktioniert so bei mir nicht.

Also mit angepassten Variablen....

L.G.
Member: TlBERlUS
TlBERlUS Feb 18, 2016 at 14:46:54 (UTC)
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)