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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 79801
Url: https://administrator.de/contentid/79801
Ausgedruckt am: 22.11.2024 um 22:11 Uhr
5 Kommentare
Neuester Kommentar
Hallo Bjoern909!
Soferne das Wort (wie in Deinem Beispiel) alleine in einer Zeile steht:
Ansonsten etwa so:
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
Soferne das Wort (wie in Deinem Beispiel) alleine in einer Zeile steht:
findstr /v /b /e /c:"Bjoern" Textdatei.txt>TextdateiKurz.txt
@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%"
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