bjoern909
Goto Top

Wort aus einer Text datei entfernen

hallo Batchprofis,
Hier bin ich wieder.
Diesmal möchte ich ein Wort z.B.: Bjoern aus einer Textdatei entfernen. Ich weis aber nicht WO dieses Wort in der textdatei steht. Also kann keine Zeile nennen.

Textdatei:
Daniel
Bjoern
Christian
Kristin

nach dem ausführen der Batch datei steht in der Textdatei dann nur noch:

Textdatei:
Daniel
Christian
Kristin

so habe ich mir das vorgestellt. Wenn ihr noch mehr Informationen braucht dann sacht bescheid und WELCHE Infos ihr noch braucht.

MfG Bjoern

Content-Key: 79801

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

Printed on: April 16, 2024 at 22:04 o'clock

Member: bastla
bastla Feb 03, 2008 at 17:09:14 (UTC)
Goto Top
Hallo Bjoern909!

Soferne das Wort (wie in Deinem Beispiel) alleine in einer Zeile steht:
findstr /v /b /e /c:"Bjoern" Textdatei.txt>TextdateiKurz.txt  
Ansonsten etwa so:
@echo off & setlocal enabledelayedexpansion
set "Datei=D:\DeinText.txt"  
set "Wort=Bjoern"  

set "Bak=%Datei%.bak"  
move "%Datei%" "%Bak%"  
for /f "usebackq delims=" %%i in ("%Bak%") do set "Zeile=%%i" & call :ProcessLine  
goto :eof

:ProcessLine
echo %Zeile%|findstr /c:"%Wort%">nul || goto :SchreibeZeile  
set "Zeile=!Zeile:%Wort%=!"  

:SchreibeZeile
echo.%Zeile%>>"%Datei%"  
Einschränkung dieser Variante: Wenn ein "!" im Text vorkommt, wird dieses entfernt, gibt es in der selben Zeile ein zweites "!", verschwindet auch der Text dazwischen. Auch Leerzeilen gehen verloren.

Gesucht wird übrigens auch nach Wortbestandteilen (wie etwa in "Jens-Bjoern" oder "Bjoern-Uwe").

Zumindest dem "!"-Problem ließe sich bei Bedarf entweder durch die Verwendung einer Konstanten (das Wort muss anstelle der Variablen %Wort% in die beiden Zeilen des Teiles ":ProcessLine" geschrieben und der Batch auch anderweitig angepasst werden) oder den Einsatz eines (temporären) VBScripts (damit blieben auch ev Leerzeilen erhalten) beikommen.

Die Frage, wie (abgetrennt - wenn ja: wodurch? - oder als Wortbestandteil) bzw wo (Beginn oder Ende der Zeile oder auch mittendrin) das Wort in der Zeile steht, wäre aber noch zu klären.

Grüße
bastla
Member: Bjoern909
Bjoern909 Feb 03, 2008 at 17:56:53 (UTC)
Goto Top
Okay dein 2. Beispiel habe ich verstanden aber das erste verstehe ich irgendwie nicht. Textdatei ist die eigentliche Datei aus der das Wort entfernt wird und Textdateikurz ist was? Wird das Wort aus Textdatei in Textdateikurz eingefügt oder ist textdateikurz gleich Textdatei (halt nur ohne das Wort)?
Member: bastla
bastla Feb 03, 2008 at 18:02:06 (UTC)
Goto Top
Hallo Bjoern909!

... ist textdateikurz gleich Textdatei (halt nur ohne das Wort)?
Hat Dein Test etwas anderes ergeben?

Grüße
bastla
Member: Bjoern909
Bjoern909 Feb 04, 2008 at 11:45:36 (UTC)
Goto Top
Nein ich weis nur nicht was ich bei textdateikurz.txt fürn Name angeben muss. oder kann ich den Namen lassen?
Member: bastla
bastla Feb 04, 2008 at 14:21:54 (UTC)
Goto Top
Hallo Bjoern909!

Dann also komplett:
@echo off & setlocal
set "Datei=D:\DeinText.txt"  
set "Wort=Bjoern"  

set "Bak=%Datei%.bak"  
move "%Datei%" "%Bak%"  
findstr /v /b /e /c:"%Wort%" "%Bak%">"%Datei%"  

Grüße
bastla