gpt4 book ai didi

windows - 将多行环境变量拆分为多行

转载 作者:可可西里 更新时间:2023-11-01 11:28:09 26 4
gpt4 key购买 nike

我有以下问题:我在 Jenkins 服务器上执行 Windows 批处理文件,必须将多行环境变量(通过 Jenkins 参数设置)拆分为单行。每行都是另一个程序的参数列表的一部分:

Jenkins 文本框参数:

-foo 224 -bar "Some parameter with spaces"
-foo 225 -bar "another param"

应该会导致 Jenkins 内部的以下调用:

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.

关于windows - 将多行环境变量拆分为多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28987829/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com