bjoern909
Goto Top

Per Batch ein Wort in Einer Textdatei gegen ein anderes ersetzen

Hallo!
Ich bin auf der suche nach einem Befehl für eine Batch dstei mit dem man Ein Wort in einer Text datei gegen ein anderes ersetzen kann.

Sagen wir erst sieht die Text datei so aus:
Von Bjoern:
Hallo!

und danach soll sie so aussehen:
(Von) Bjoern:
Hallo

also das Von gegen ein (Von) ersetzen.
Ich habe mich natürlich schon im Forum umgeschaut, habe aber nur bei diesem Beitrag hier: Per Batchdatei Textdateien bearbeiten
etwas gefunden.
jedoch funktioniert der Befehl sed nicht. Wie muss ich das verstehen? Ich habe den Befehl sed schon öfters hier gesehen aber für welche Programmiersprache braucht man sed denn?

MfG Bjoern

Content-ID: 80883

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

Ausgedruckt am: 22.11.2024 um 13:11 Uhr

miniversum
miniversum 16.02.2008, aktualisiert am 18.10.2012 um 18:35:24 Uhr
Goto Top
Das dort verwendete sed ist ein Befehl unter Linux.
Es gibt aber auch diese Linuxkomandos als Programme unter Windows, die man dann extra runterladen kann.
Wi ees Rein mit Windows Boardmitteln geht ist z.B. hier gezeigt:
In einer Textdatei das Zeichen Und ersetzen durch u

Prinzipiell steht alles in der Hilfe vom set befehl (set /?)

Das funktioniert allerdings nur so leicht bei normalen Asci Text Dateien. Sobalt andere Zeichen enthalten sind die über den normalen Zeichensatz hinausgehen wird das damit schwierig und sollte getestet werden.

miniversum
Bjoern909
Bjoern909 16.02.2008 um 11:58:30 Uhr
Goto Top
Nehmen wir mal das Beispiel aus dem Link:
Wenn in der Textdatei

GmbH & Co.KG

steht, steht nach dem Benutzen der Batchdatei da nur noch:

GmbH Co.KG

sagen wir mal ich möchte statt dem & ein Und da stehen haben ... und nicht das & köschen.
Oder ich verstehe das nicht was da steht.
Vielleicht könntet ihr mir ja auch den gesamten verbesserten Code geben falls ich was vergessen habe.
miniversum
miniversum 16.02.2008 um 12:22:06 Uhr
Goto Top
Allgemein ist die Wichtige Konstruktion diese hier:
%text:zu_ersetzender_text=ersatz_text%
Bzw hier in dem Beispiel:
!text:^&=und!
Wobei das "^" vor dem "&" in diesem Fall nur notwendig ist weil das "&" Zeichen in Batch für was anderes vorgesehen ist und sonst falsch interpretiert werden würde. Bei Normalen Textzeichen (a-z, Zahlen) ist das kein Problem. Bei andern Zeichen kanns sein das es gebraucht wird (%,!,^<>).

Also im konkreten Fall das jedes "&" durch ein "und" ersetzt wird:
@echo off
setlocal enabledelayedexpansion

set "filename=text.txt"  
set "tempfile=tmptxt.txt"  

for /F "delims=" %%a in (%filename%) do (  
set text=%%a
set text=!text:^&=und!>>%tempfile%
)

del %filename%

miniversum
Bjoern909
Bjoern909 16.02.2008 um 15:17:15 Uhr
Goto Top
okay klappt... danke für deine Hilfe Miniversum
Du hast mir sehr viel geholfen. langsam schaffe ich es nömlich auch selber For schleifen zu bauen.

Bjoern