SET string=bath Abath Bbath XYZbathABC
SET modified=%string:bath=hello%
ECHO %string%
ECHO %modified%
РЕДАКТИРОВАТЬ
Сначала не видел, что вы хотите, чтобы замене предшествовало чтение строки из файла.
Ну, скомандный файл, у вас не так много возможностей для работы с файлами.В этом конкретном случае вам нужно прочитать строку, выполнить замену, затем вывести измененную строку, а затем ... Что тогда?Если вам нужно заменить все вхождения 'bath' во всем файле, вам придется использовать цикл:
@ECHO OFF
SETLOCAL DISABLEDELAYEDEXPANSION
FOR /F %%L IN (file.txt) DO (
SET "line=%%L"
SETLOCAL ENABLEDELAYEDEXPANSION
ECHO !line:bath=hello!
ENDLOCAL
)
ENDLOCAL
Вы можете добавить перенаправление в файл:
ECHO !line:bath=hello!>>file2.txt
Или вы можете применить перенаправление к пакетному файлу. должен быть другим файлом.
РЕДАКТИРОВАТЬ 2
Добавлено правильное переключение отложенного расширения для правильной обработки некоторых символов, которые имеют особое значение ссинтаксис пакетного сценария, например !
, ^
и др.(Спасибо, Джеб !)