gpt4 book ai didi

batch-file - 在批处理文件中列出键值对

转载 作者:行者123 更新时间:2023-12-04 00:40:20 30 4
gpt4 key购买 nike

我正在编写 Windows 批处理脚本来处理用户输入。输入字符串如下所示:

key1=value1 key2=value2 key3="value 3"

即用空格分隔的一系列对,每对的格式为 key=value,其中可以引用 value。引用的值可能包含空格。此类对的数量不固定 - 从 1 到任何合理的数量,具体取决于用户。

对于每一对,我都需要创建一个名为 key 的环境变量,并为其分配 value

最初我尝试使用下面的代码遍历该字符串(为了演示,我对 INPUT 字符串进行了硬编码,但通常它会作为参数传递给脚本):

@ECHO OFF
set INPUT=key1=value1 key2=value2 key3="value 3"
for %%i in (%INPUT%) do (
echo %%i
)

这是行不通的,因为它不仅按空格拆分,而且还按 = 给出单个标记的输出序列而不是键=值对:

d:\home\work>testParameters.bat
key1
value1
key2
value2
key3
"value 3"

我看到 for/f %%i in ("%INPUT%") 可能会起作用,但它带来了不同的问题:正如我之前所说,对的数量可能会有所不同我不清楚我将如何遍历所有这些。

请问这里有什么建议吗?

最佳答案

@echo off
setlocal EnableDelayedExpansion

set INPUT=key1=value1 key2=value2 key3="value 3"
for %%a in (%input%) do (
if not defined varname (
set varname=%%a
) else (
set !varname!=%%a
set "varname="
)
)

只要值没有逗号、分号、空格或等号,前面的方法就有效,除非它们被引号括起来。

关于batch-file - 在批处理文件中列出键值对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19411259/

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