首页 > 解决方案 > 如果一行包含“=”,则文件中的文本替换失败

问题描述

我正在尝试通过 Visual Studio 的后期构建操作中的批处理文件替换文件中的字符串。第一个字符串是lMkUk=,第二个字符串(替换字符串)是##DummyValues##.

在 Visual Studio 生成后操作中使用批处理文件将第一个字符串替换为第二个字符串时,第一个字符串未正确替换,而是替换为=##DummyValues##=; =在第二个字符串的开头和结尾添加。

但是,如果我使用相同的批处理文件删除第一个字符串末尾的=(并使其成为),则该字符串将被成功替换。lMkUk似乎=是第二个字符串中的问题。

这是我的代码:

@echo on&setlocal
setlocal enableextensions disabledelayedexpansion
::License key replacement file
set sourceFile=%1

::Replacement string
set FirstVariable=lMkUk=
set SecondVariable=##DummyValues##

::Replacement statement
if NOT "%FirstVariable%" == "" (
        for /f "delims=" %%i in ('type "%sourceFile%" ^& break ^> "%sourceFile%" ') do (
        set "line=%%i"
        setlocal enabledelayedexpansion
        >>"%sourceFile%" echo(!line:%FirstVariable%=%SecondVariable%!
        endlocal
    )
)

如何在 Visual Studio 生成后操作中解决此问题?

标签: visual-studiobatch-filereplacepost-build-eventpost-build

解决方案


推荐阅读