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

时间:2014-07-22 02:32:28

标签: batch-file str-replace

set NLM=^


set NL=^^^%NLM%%NLM%^%NLM%%NLM%
SET memoli=%token:QMZ=%NL%%%
echo %memoli%>>%tmp%\list2.txt

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

3 个答案:

答案 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