SET string=bath Abath Bbath XYZbathABC
SET modified=%string:bath=hello%
ECHO %string%
ECHO %modified%
BEARBEITEN
Ich habe zunächst nicht gesehen, dass vor dem Ersetzen die Zeichenfolge aus einer Datei gelesen werden soll.
Nun, mit einer Batch-Datei haben Sie nicht viel Möglichkeiten, an Dateien zu arbeiten. In diesem speziellen Fall müssten Sie eine Zeile lesen, das Ersetzen durchführen, dann die geänderte Zeile ausgeben und dann ... Was dann? Wenn Sie alle Vorkommen von 'bath' in der gesamten Datei ersetzen müssen, müssen Sie eine Schleife verwenden:
@ECHO OFF
SETLOCAL DISABLEDELAYEDEXPANSION
FOR /F %%L IN (file.txt) DO (
SET "line=%%L"
SETLOCAL ENABLEDELAYEDEXPANSION
ECHO !line:bath=hello!
ENDLOCAL
)
ENDLOCAL
Sie können einer Datei eine Umleitung hinzufügen:
ECHO !line:bath=hello!>>file2.txt
Oder Sie können die Umleitung auf die Batchdatei anwenden. Es muss eine andere Datei sein.
BEARBEITEN 2
Hinzugefügt richtige Hin- und Herschalten der verzögerten Expansion für die korrekte Verarbeitung von einigen Zeichen , die spezielle Bedeutung mit Batch - Skript - Syntax hat, wie !
, ^
et al. (Danke, jeb !)