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Б