我正在编写一个 Windows 批处理脚本来处理用户输入。输入字符串如下所示:
key1=value1 key2=value2 key3="value 3"
即用空格分隔的对序列,每对具有key=value的格式,其中value可以被引用。带引号的值可能包含空格。这种对的数量不是固定的 - 从 1 到任何合理的数字,取决于用户。
对于每一对,我都需要创建一个名为key的环境变量并为其赋值。
最初,我尝试使用下面的代码迭代该字符串(对于演示,我将 INPUT 字符串硬编码,但通常它将作为参数传递给脚本):
@ECHO OFF
set INPUT=key1=value1 key2=value2 key3="value 3"
for %%i in (%INPUT%) do (
echo %%i
)
这不起作用,因为它不仅由空格分割,而且由 = 仅给出单个标记的输出序列而不是 key=value 对:
d:\home\work>testParameters.bat
key1
value1
key2
value2
key3
"value 3"
我看到这for /f %%i in ("%INPUT%")
可能会奏效,但它带来了一个不同的问题:正如我之前所说,对的数量可能会有所不同,我不清楚我将如何迭代所有这些。
请问这里有什么建议吗?