在批处理中用新行替换字符串

Rıd*_*tin 5 batch-file str-replace

set NLM=^


set NL=^^^%NLM%%NLM%^%NLM%%NLM%
SET memoli=%token:QMZ=%NL%%%
echo %memoli%>>%tmp%\list2.txt
Run Code Online (Sandbox Code Playgroud)

我无法用新行更改字符串“QMZ”。怎么做?

jeb*_*jeb 5

很简单

setlocal EnableDelayedExpansion
set "token=HelloQMZworld"
echo !token:QMZ=^

!
Run Code Online (Sandbox Code Playgroud)

它的工作原理是批处理解析器首先解析多行插入符并将其替换为单个换行符。
然后在延迟扩展阶段,它用单个换行替换 QMZ,这在该阶段是合法的。

要使用替换的字符串设置新变量,只需使用

setlocal EnableDelayedExpansion
set "token=HelloQMZworld"
set newVal=!token:QMZ=^

!
echo !newVal!
Run Code Online (Sandbox Code Playgroud)