在 windows 批次中使用双破折号作为分隔符拆分包含单破折号和双破折号的字符串

Splitting a string with double dash as delimiter containing both single & double dash in windows batch

这是我正在处理的代码。

set "comd=aws iam create-group --group-name xxx --user-name yyy"
    for /f "tokens=2,3delims=--" %%a in ("%comd%") do (
       echo %%a 
       echo %%b 
    )

我想取出 group-name xxx 作为一个标记, user-name yyy 作为另一个标记,但是 当我使用 -- 作为分隔符时,它认为带有 - 的字符串也适合标记化,因此在这种情况下,create-groupgroup 也被视为单独的标记。

我想让这段代码适用于所有出现的情况 --key value

您可以做的最简单的事情就是将 -- 替换为不太可能的东西,例如 ~。例如在 for 行之前设置 comd=%comd:--=~%。

你的完整区块将是:

set "comd=aws iam create-group --group-name xxx --user-name yyy"
set comd=%comd:--=~%
for /f "tokens=2,3 delims=~" %%a in ("%comd%") do (
   echo %%a 
   echo %%b 
)

您可能还想阅读 - 那里有一些好主意