Mittels Batch alle .txt Dateien eines Verzeichnises ändern
Ich habe ca. 10.000 TXT-Dateien in einem Verzeichnis und möchte für alle folgendes durchführen:
-> suchen in jeder Datei nach der Zeichenkette "Test" und ersetzen durch "TEST123456"
-> speichern als "[ursprungsname]-1.txt"
Danke die Hilfe
-> suchen in jeder Datei nach der Zeichenkette "Test" und ersetzen durch "TEST123456"
-> speichern als "[ursprungsname]-1.txt"
Danke die Hilfe
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 302821
Url: https://administrator.de/forum/mittels-batch-alle-txt-dateien-eines-verzeichnises-aendern-302821.html
Ausgedruckt am: 18.04.2025 um 07:04 Uhr
10 Kommentare
Neuester Kommentar
Hallo erstmal,
das Thema "Suchen und ersetzen mittels Batchscript" ist etwas, was hier schon in allen möglichen Varianten durchgekaut wurde, einfach mal die Forensuche bemühen.
In vielen Fällen kommt es aber zu Problemen, wenn die zu durchsuchende Textdatei, der Suchbegriff oder die Ersetzung irgendwelche Sonderzeichen enthält, die vom Batchscript-Interpreter als Operator, Befehl oder syntaktisches Element betrachtet werden.
Batchscript ist NICHT für Such- und Ersetzungsoperationen in Textdateien geeignet!
Du solltest versuchen, mit PowerShell oder VBScript zu einer Lösung zu kommen, auch dazu finden sich etliche Threads hier im Forum.
Oder verwende fertige Programme dafür:
Grüße
Friemler
das Thema "Suchen und ersetzen mittels Batchscript" ist etwas, was hier schon in allen möglichen Varianten durchgekaut wurde, einfach mal die Forensuche bemühen.
In vielen Fällen kommt es aber zu Problemen, wenn die zu durchsuchende Textdatei, der Suchbegriff oder die Ersetzung irgendwelche Sonderzeichen enthält, die vom Batchscript-Interpreter als Operator, Befehl oder syntaktisches Element betrachtet werden.
Batchscript ist NICHT für Such- und Ersetzungsoperationen in Textdateien geeignet!
Du solltest versuchen, mit PowerShell oder VBScript zu einer Lösung zu kommen, auch dazu finden sich etliche Threads hier im Forum.
Oder verwende fertige Programme dafür:
- Fürs Suchen und Ersetzen z.B GrepWin.
- Zum Umbenennen z.B. den ReNamer oder das schon genannte BulkRenameUtility.
Grüße
Friemler

Powershell:
Gruß jodel32
$search = 'Test'
$replace = 'TEST12345'
gci 'C:\Ordner' -Filter *.txt | %{(gc $_.Fullname | out-string).replace($search,$replace) | set-content "$($_.DirectoryName)\$($_.Basename)-1$($_.Extension)"}

Kann ich nicht bestätigen geht einwandfrei . Achtung, diese Replace Variante ist Case-Sensitive. Es gibt hier auch noch andere Varianten mit Regular-Expressions.

Zitat von @mttspeedy:
Ich habe meinen Denkfehler... die Zeichenkette "Test" ist das Suchkriterium, aber ich will natürlich nicht nur "Test" ersetzen, sondern die 15 folgenden Zeichen nach Test mit, wobei ich diese nicht kenne..... Dein Powershell macht genau, dass was ich geschrieben habe, das war mein Fehler
Wie sind die Operatoren für $search´ dann *?
Dann mach es stattdessen direkt über Regular Expressions dann bist du super flexibelIch habe meinen Denkfehler... die Zeichenkette "Test" ist das Suchkriterium, aber ich will natürlich nicht nur "Test" ersetzen, sondern die 15 folgenden Zeichen nach Test mit, wobei ich diese nicht kenne..... Dein Powershell macht genau, dass was ich geschrieben habe, das war mein Fehler
Wie sind die Operatoren für $search´ dann *?
$search = 'Test.{15}'
$replace = 'TEST12345'
gci 'C:\Ordner' -Filter *.txt | %{(gc $_.Fullname | out-string) -replace $search,$replace | set-content "$($_.DirectoryName)\$($_.Basename)-1$($_.Extension)"}