将多行环境变量拆分为几行
我有以下问题:我在Jenkins服务器上执行Windows批处理文件,并且不得不将多行环境变量(通过Jenkins参数设置)拆分为单行。每行是另一个程序的参数列表的一部分:
Jenkins文本框参数:
-foo 224 -bar "Some parameter with spaces"-foo 225 -bar "another param"
应该在詹金斯内部引发以下调用:
myprog.exe -baz 0 -meow -foo 224 -bar "Some parameter with spaces"myprog.exe -baz 0 -meow -foo 225 -bar "another param"
我尝试将其拆分,for /F
但没有成功。搜索没有发现任何有用的信息,我尝试的任何操作都给了我语法错误,或者只是打印了第一行。
这是我尝试过的事情:
for /f "tokens=* delims= " %%f in ("%varname%") do
给我语法错误,因为该变量已包含引号。
echo %varname%
仅输出变量的第一行。
有任何想法吗?
回答:
FOR / F命令将插入变量中的LF作为行分隔符(这是FOR / F命令的自然行为),因此,使用FOR / F处理此类变量不需要任何其他操作:
@echo offsetlocal EnableDelayedExpansion
rem Create a variable containing line breaks.
set LF=^
%empty line 1/2%
%empty line 2/2%
set "str=The quick brown!LF!fox jumps over!LF!the lazy dog."
set line=0
for /F "delims=" %%a in ("!str!") do (
set /A line+=1
echo Line !line!: %%a
)
这里的关键是用!exclamationMarks !;扩展变量。否则,LF将削减%value%。另外,如果要用LF分隔 完整的行 ,请使用“
delims =”。输出示例:
Line 1: The quick brownLine 2: fox jumps over
Line 3: the lazy dog.
以上是 将多行环境变量拆分为几行 的全部内容, 来源链接: utcz.com/qa/400319.html