将多行环境变量拆分为几行

我有以下问题:我在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 off

setlocal 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 brown

Line 2: fox jumps over

Line 3: the lazy dog.

以上是 将多行环境变量拆分为几行 的全部内容, 来源链接: utcz.com/qa/400319.html

回到顶部