Не могу заменить строку, содержащую оператор - PullRequest
0 голосов
/ 16 марта 2019

Я использую пакет, чтобы найти и заменить выражение в файле (адаптировано из @MC ND).

@echo off 
setlocal enableextensions disabledelayedexpansion

set "Var1=blabla=toto"
set "Var2=replace"
set "Var3=test.bat"

   for /f "delims=" %%i in ('type "%Var3%" ^& break ^> "%Var3%" ') do (
       set "line=%%i"

       setlocal enabledelayedexpansion
       >>"%Var3%" echo(!line:%Var1%=%Var2%!
       endlocal
   )

Но это не работает, когда я пробую выражение, содержащее оператор, такой как "blabla = toto"

входной файл:

 blabla=toto

Результат, который я получил:

 toto=replace=toto

Результат, который я хочу:

 replace

Кто-нибудь имеет представление об этом?

1 Ответ

1 голос
/ 16 марта 2019

Я бы посоветовал вам защитить свой разум и использовать кредитное плечо powershell.exe вместо:

@Echo Off
Set "Var1=blabla=toto"
Set "Var2=replace"
Set "Var3=test.bat"
PowerShell -NoP "(GC '%Var3%') -Replace '%Var1%','%Var2%'|SC '%Var3%'" 2>Nul

Или, учитывая, что ваш предыдущий вопрос получал три переменные в качестве аргументов:

@PowerShell -NoP "(GC '%~3') -Replace '%~1','%~2'|SC '%~3'" 2>Nul
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...