Text In Datei Suchen Ersetzen Per Batch

Ich hatte mal so ein geniales WordPress-Plugin gefunden. Super günstig, machte genau das, was ich brauchte. Nur... die Benutzeroberfläche war auf Holländisch. Ja, echt. Und der Entwickler hatte wohl vergessen, ein vernünftiges Sprachpaket einzubauen. Super, oder? Da stand ich nun, mit meinem "Gratis"-Plugin und musste erstmal Holländisch lernen. Spoiler: Hab ich nicht. Aber ich hab gelernt, wie man Texte in Dateien suchen und ersetzen kann – per Batch-Skript. Und das, meine Freunde, ist Gold wert.
Okay, vielleicht nicht ganz so wertvoll wie ein funktionierendes Sprachpaket, aber trotzdem nützlich. Denn mal ehrlich, wer hat nicht schonmal ein Problem gehabt, wo man dachte: "Boah, wenn ich jetzt *alle* Dateien in *diesem* Ordner nach *diesem* Text durchsuchen und durch *diesen* anderen Text ersetzen könnte, wäre ich König/Königin!"? Eben. Und genau darum geht's heute.
Warum überhaupt Batch?
Batch-Skripte sind quasi die Schweizer Taschenmesser der Textverarbeitung. Okay, vielleicht eher der Schraubenzieher. Aber ein verdammt guter Schraubenzieher! Sie sind simpel, schnell und auf fast jedem Windows-Rechner vorhanden. Keine Installation von irgendwelchen fancy Programmen nötig. Einfach Editor auf, Code rein, speichern, fertig. Außerdem, sind wir ehrlich, es fühlt sich ein bisschen wie Hacken an, oder? 😉
Moment mal, Batch? Ist das nicht total veraltet? Ja, schon ein bisschen. Aber hey, es funktioniert! Und manchmal ist das Beste, was man sagen kann: "Es funktioniert." Power Shell ist natürlich auch 'ne super Alternative, aber für schnelle, unkomplizierte Textmanipulation ist Batch oft genug.
Die Zutaten für dein Text-Ersetzungs-Festmahl
Was brauchst du, um loszulegen?
- Einen Texteditor: Notepad++ ist mein persönlicher Favorit, aber der normale Windows Editor tut's auch.
- Ein bisschen Mut: Keine Angst, du kannst (meistens) nichts kaputt machen. (Backup ist trotzdem immer gut! Nur so als Tipp.)
- Den Befehl `for`: Das ist dein Arbeitstier. Damit gehst du durch alle Dateien.
- Den Befehl `sed`: Nee, nicht das Beruhigungsmittel. Sondern ein kleiner Kommandozeilen-Texteditor. Okay, den gibt's unter Windows nicht standardmäßig, aber keine Panik!
- Oder (Alternative zu Sed) Den Befehl `findstr` und etwas mehr Logik: Wenn du `sed` nicht installieren willst (oder darfst), musst du den Text halt etwas umständlicher suchen und ersetzen. Geht aber auch.
Sed installieren (oder auch nicht)
Okay, bevor wir loslegen, müssen wir kurz klären, ob du `sed` installieren willst. Der einfachste Weg ist, es über GnuWin32 herunterzuladen. Dann den Pfad zur `sed.exe` in deine Umgebungsvariablen eintragen (Google hilft!). Klingt kompliziert? Ist es aber eigentlich nicht.
Wenn du `sed` nicht willst (oder kannst), überspring diesen Schritt und scroll weiter zum Abschnitt "Sed-Alternative".
Sed-Alternative: Findstr und Batch-Magie
Okay, `sed` ist nicht dein Ding? Kein Problem. Wir basteln uns was Eigenes! Das ist zwar etwas komplizierter, aber dafür lernst du noch mehr über Batch-Skripte.
Die Grundidee ist: Wir lesen die Datei Zeile für Zeile ein, suchen nach dem Text, ersetzen ihn und schreiben die Zeile wieder in eine temporäre Datei. Am Ende benennen wir die temporäre Datei in die Originaldatei um. Puh, klingt anstrengend, oder? Ist es auch ein bisschen. Aber hey, wir lernen was dabei!
Das Grundgerüst des Batch-Skripts
Egal, ob mit oder ohne `sed`, das Grundgerüst sieht immer ähnlich aus:
@echo off
setlocal
set "search=DeinSuchtext"
set "replace=DeinErsetzungstext"
set "directory=DeinOrdner"
for %%a in ("%directory%\*.*") do (
echo Bearbeite Datei: %%a
:: Hier kommt die Magie mit sed oder findstr
)
endlocal
pause
Ersetze "DeinSuchtext", "DeinErsetzungstext" und "DeinOrdner" mit deinen Werten. Und dann... kommt die Magie!
Sed-Version (kurz und schmerzlos)
Wenn du `sed` installiert hast, ist der Code super einfach:
sed "s/%search%/%replace%/g" "%%a" > "%%a.tmp"
move /y "%%a.tmp" "%%a"
Dieser Code sucht in jeder Zeile der Datei (`%%a`) nach `%search%` und ersetzt es durch `%replace%`. Das `g` am Ende bedeutet "global", also alle Vorkommnisse in der Zeile werden ersetzt. Dann wird das Ergebnis in eine temporäre Datei ("%%a.tmp") geschrieben und die Originaldatei damit überschrieben.
Findstr-Version (die Bastellösung)
Die Findstr-Version ist deutlich länger und komplizierter. Ich spar mir hier den kompletten Code (sonst wird's zu lang), aber die Grundidee ist, mit einer `for /F` Schleife die Datei Zeile für Zeile einzulesen, mit `findstr` zu prüfen, ob der Suchtext vorkommt, und dann mit Stringmanipulation den Text zu ersetzen, bevor die Zeile in eine temporäre Datei geschrieben wird. Google mal nach "batch string replace file without sed", da findest du jede Menge Beispiele.
Fertig! Fast...
Speichere dein Skript als `.bat`-Datei (z.B. `ersetzen.bat`) und doppelklicke darauf. Et voilà! Deine Dateien werden bearbeitet. Aber denk dran: Backup ist dein Freund!
So, jetzt hast du ein mächtiges Werkzeug in der Hand. Viel Spaß beim Text-Ersetzen! Und denk dran: Wenn's nicht klappt, einfach nochmal probieren. Und wenn das auch nicht hilft: frag Google! 😉



