Как заменить знак равенства в командном файле? - PullRequest
0 голосов
/ 17 марта 2020

Я пытаюсь найти и заменить строку, содержащую знак равенства, и я не получаю ожидаемый результат. Но когда текст не содержит знак равенства, а только буквенные символы 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

Может кто-нибудь пожалуйста помогите мне решить эту проблему. Я ищу решение, используя только команды пакетного файла и без каких-либо внешних приложений. Спасибо ..

...