我有一个表示设置名称及其值的键-值对的列表。

ssl=strict
always_use_https=on
minify={"css":"off","html":"off","js":"off"}
key=value
many=more

我想在批处理文件中应用带有 curl 请求的指定设置(键)中的每个值:
curl -X PATCH "https://api.cloudflare.com/client/v4/zones/%zone%/settings/%key%" ^
    -H "X-Auth-Email: %email%" ^
    -H "X-Auth-Key: %auth%" ^
    -H "Content-Type: application/json" ^
    --data "{\"value\":\"%value%\"}" ^
    --insecure

我遇到的问题是这些k-v对的保存以及通过它们的迭代,因此我为每对发送一个请求。我似乎无法弄清楚如何批量创建字典。

如果您认为有比批处理更适合这种任务的工具,请告诉我。

最佳答案

使用以下命令保存环境变量及其值:

set "SettingsFile=%TEMP%\%~n0.txt"
setlocal EnableExtensions EnableDelayedExpansion
(
    echo ssl=!ssl!
    echo always_use_https=!always_use_https!
    echo minify=!minify!
    echo key=!key!
    echo many=!many!
) >"%SettingsFile%"
endlocal

随便使用SettingsFile,但目录树必须存在。

批处理文件中的单个命令行足以将它们从文件读回到环境变量:
for /F "usebackq delims=" %%I in ("%SettingsFile%") do set "%%I"

而已。从设置文件中读取环境变量名称及其值以获取带有一个或多个感叹号的正确读取值时,不应启用Delayed expansion

为了了解所使用的命令及其工作方式,请打开命令提示符窗口,在其中执行以下命令,并非常仔细地阅读每个命令显示的所有帮助页面。
  • echo /?
  • endlocal /?
  • for /?
  • set /?
  • setlocal /?

  • 另请阅读有关Using command redirection operators的Microsoft文章。

    关于windows - 遍历Windows Batch中的键值对,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54618310/

    10-14 18:46
    查看更多