Text mit Batch suchen und ersetzen

Hallo!

Ich möchte über eine Batchdatei eine Textstelle aus einer Datei suchen und durch einen anderen Text ersetzen.

Da habe ich etwas von CHANGED.COM gelesen und bei Dateien bis 32 kb funktioniert auch alles prima! Aber eben nur bis 32 kb.

Das ganze soll wie gesagt über eine Batch-Datei realsiert werden. Ggf auch über ein externes Programm:

Programm test.txt „suchen“ „ersetzen“

(so ging es zumindest bei changed.com)

Hat jemand eine Lösung?

Gruß,
Peter

Hallo!

Wäre es nicht einfacher, die betreffende txt-Datei in einen Standardeditor (Vi, Emacs, MS Edit, u.a.) zu laden und den Text per Suchen & Ersetzen zu modifizieren?

Grüße

Björn

Hallo,
nutzt du ein Windows System? Dann kannst du einen VBScript für eine solche Aufgabe verwenden:

Probier es mal damit:

Dateiname = WScript.Arguments(0) 
'Muss eine Textdatei sein!!
Suchen = WScript.Arguments(1)
Ersetzen = WScript.Arguments(2)
NeuerInhalt = ""

Set objFSO = CreateObject("Scripting.FileSystemObject")
if objFSO.FileExists(Pfad + Dateiname) Then
 Set Datei = objFSO.OpenTextFile(Pfad + Dateiname, 1, true)
 NeuerInhalt = Replace(Datei.ReadAll,Suchen ,Ersetzen ) + vbcrlf 
 Datei.close
end if
'In "NeuerInhalt" steht das Geänderte nun drinne

Abspeichern als test.vbs
Aufruf in einer Batchfile so:
cscript test.vbs test.txt SuchText ErsetzteText

Müsste funktionieren (Pfad noch anpassen), habe es allerdings NICHT getstet

Gruß,
AlexR

Hmm, klingt gut und verursachte auch keine Fehler beim einbinden. Nur wie schreibe ich den veränderten String wieder in selbige Datei?

Gruß,
Peter

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo,
probier es so:

[..]
'In "NeuerInhalt" steht das Geänderte nun drinne
msgbox NeuerInhalt

Dann weißt du, was raus kommt. Wenn das Ergebnis dem entspricht, was du sehen willst, dann geht es so weiter (Die Ausgabe per MsgBox kannst du dann löschen):

Set Datei = Nothing
Set Datei = objFSO.OpenTextFile(Pfad + Datei, 2, True)'2 ^= ForWriting
Datei.write NeuerInhalt 'Der alte Inhalt der Datei wird überschrieben
Datei.close

Am besten mit einer einfachen Test-Text-Datei testen, bevor du diesen Script an wichtige Daten ran lässt!!!

(Immer noch nicht getestet
Gruß,
AlexR

Hallo,

Nur wie schreibe ich den veränderten String wieder
in selbige Datei?

Wenn es Dir möglich ist, auf besagtem Rechner Perl
( http://downloads.activestate.com/ActivePerl/Windows/… )
zu installieren, kannst Du in Deine
Batch-Datei folgende Zeile schreiben:

 ...
 perl -i.bak -pe "s/alteswort/neueswort/g" test.txt
 ...

Das würde demnach alle Vorkommen von ‚alteswort‘ durch
‚neueswort‘ in der Datei test.txt ersetzen und eine
Backup-Datei des Originals mit der Endung .bak erzeugen.

Das hätte den Vorteil, daß Du auch solche Sachen wie
AltesWort altesWORT usw. bei Bedarf finden könntest,
die Änderung zu obiger Form wäre:
" … s/alteswort/neueswort/gi … "

Grüße

CMБ