无法替换包含运算符的字符串

时间:2019-03-16 16:01:46

标签: batch-file replace operators

我使用批处理来查找表达式并将其替换为文件(改编自@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 个答案:

答案 0 :(得分:1)

我建议您保护自己的理智并利用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