set NLM=^
set NL=^^^%NLM%%NLM%^%NLM%%NLM%
SET memoli=%token:QMZ=%NL%%%
echo %memoli%>>%tmp%\list2.txt
我无法用新行更改字符串“QMZ”。怎么做?
答案 0 :(得分:3)
非常简单
setlocal EnableDelayedExpansion
set "token=HelloQMZworld"
echo !token:QMZ=^
!
当批处理解析器首先解析多行插入符并用单个换行符替换它时,它起作用 然后在延迟扩展阶段,它用一个换行替换QMZ,这在该阶段是合法的。
要使用替换的字符串设置新变量,只需使用
setlocal EnableDelayedExpansion
set "token=HelloQMZworld"
set newVal=!token:QMZ=^
!
echo !newVal!
答案 1 :(得分:1)
set LF=^
rem ** Two empty lines required
FOR /F "delims=" %%a in ("%token:QMZ=!LF!%") do (
echo %%a>>%tmp%\list2.txt
)
我只是在代码中徘徊,我只是在不知不觉中这样做了。但它确实可以解决问题。
答案 2 :(得分:0)
也许以下批处理代码适用于您想要执行的操作:
@echo off
rem Define environment variable "token" with an example string.
set token=Line1QMZLine2QMZLine3
setlocal EnableDelayedExpansion
:NextLine
for /F "delims=QMZ tokens=1,*" %%I in ("!token!") do (
echo %%I>>"%tmp%\list2.txt"
set "token=%%J"
if not "!token!"=="" goto NextLine
)
endlocal