Я пытаюсь найти и заменить строку, содержащую знак равенства, и я не получаю ожидаемый результат. Но когда текст не содержит знак равенства, а только буквенные символы c, он отлично работает.
Код:
@echo off
REM -- Prepare the Command Processor
SETLOCAL ENABLEEXTENSIONS
SETLOCAL DISABLEDELAYEDEXPANSION
::BatchReplace - parses a File line by line and replaces a substring"
::syntax: BatchReplace.bat "SearchStr" "NewStr" File
:: SearchStr [in] - string to be searched
:: ReplaceStr [in] - string to replace with
:: File [in] - file to be parsed
if "%~1"=="" findstr "^::" "%~f0"&GOTO:EOF
for /f "tokens=1,* delims=]" %%A in ('"type %3|find /n /v """') do (
set "line=%%B"
if defined line (
call set "line=echo.%%line:%~1=%~2%%"
for /f "delims=" %%X in ('"echo."%%line%%""') do %%~X
) ELSE echo.
)
Сохраните приведенный выше код в виде файла BatchReplace.bat и создайте другой файл, содержащий строку поиска.
Пример опробован:
Строка поиска: abc = True
Заменить строку: abc = False
Ожидаемый результат : abc = False
Фактический вывод получен: True = abc = False = True
синтаксис: BatchReplace.bat "SearchStr" "NewStr" File_name.txt
Может кто-нибудь пожалуйста помогите мне решить эту проблему. Я ищу решение, используя только команды пакетного файла и без каких-либо внешних приложений. Спасибо ..