dimitriw
Goto Top

Batch - Mehrere Text Dateien Lesen und bestimmtes Wort, bestimmte Worte durch neue ersetzen

Guten Tag erstmal.
Ich habe ein kleines Problem.
Ich möchte eine Batch Datei erstellen, diese in mehreren Texten ein Wort oder Text suchen soll und dessen durch ein neues zu ersetzen hat.
Darauf soll die Datei abgespeichert werden.

echo off
for /F "delims=" %%A in ('Findstr /i /M /C:"xxx" *.txt') do SET %%A=fff

Momentan sieht es bei mir so aus.
Aus irgendeinen Grund, versteht er nicht was ich machen möchte.

Also am Ende, soll statt dem xxx ein FFF stehen.

mfg DimitriW

Content-Key: 142164

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

Printed on: April 18, 2024 at 23:04 o'clock

Mitglied: 77559
77559 May 05, 2010 at 09:21:59 (UTC)
Goto Top
Zitat von @DimitriW:
Momentan sieht es bei mir so aus.
Aus irgendeinen Grund, versteht er nicht was ich machen möchte.

Du weisst schon, das Computer absolut stumpfsinnig (und sehr schnell) genau das machen was man Ihnen sagt.

Das Problem ist nicht, das der Computer dich nicht versteht, eherr umgekehrt, du verstehst nicht, was du IHM sagen musst damit er genau das tut, was du möchtest.

Ergänze das oben um eine Zeile mit dem Befehl: set , damit du siehst, was du veranlasst hast.

Davon abgesehen, ist Batch nicht sehr gut geeignet beliebeigen Text zu ersetzen. Es müsen alle Dateien gelesen und wenn es etwas auszutauschen ggfs komplett neu geschrieben werden wobei dann der Begriiff in der Zeile ausgetauscht wird.

Gruß
LotPings
Member: Biber
Biber May 05, 2010 at 18:39:14 (UTC)
Goto Top
Moin DimitriW,

um das Ganze mal etwas abzukürzen... du hast das falsche Werkzeug gewählt.

Das "FindStr.exe"-Utility ist nützlich, mächtig, unverzichtbar am CMD-Prompt....aber es ist ein reines Nur-Lese-Werkzeug.
Sucht nach Strings und meldet Fundstellen OHNE Änderungen am Original vorzunehmen.

Also ungeeignet für deinen Plan.

Ein unter günstigen Umständen gern praktizierter Workaround per Batch ist die Strategie:
Lese aus einer Textdatei A jede gatesverdammte Zeile aus und
  • Prüfe, ob ein bestimmter "Suchstring" in dieser Zeile ist
  • wenn ja, schreibe diese eine Zeile nach dem Ersetzen von "Suchstring" durch "NeuerString" in Datei B
  • wenn nein, schreibe diese eine Zeile unverändert in Datei B
Wenn du damit durch bist, lösche Original A und benenne B um in A.

Hört sich holprig an, ist es aber auch.
Deshalb hat das Lordchen dieses Thema auch nicht weiter schmackhaft gemacht.

Was du für dein Problem eigentlich brauchst ist ein Editor, den aber nicht du manuell bedienst, sondern der (wenn er die Regeln kennt) aus einem Input-Stream (Originaldatei) einen Output-Stream (geänderte Datei) ohne weiteres Benutzerzutun erzeugen kann.

Glücklicherweise wurde ein derartiger Stream-Editor bereits erfunden und naheliegenderweise haben die Entwickler ihn "SED" für "Stream-Editor" genannt.

Nach einem "Sed für Windows" solltest du mal kurz suchmaschinen, dann kommst du weiter.
Und gegebenfalls wieder.

Grüße
Biber