【问题标题】:Iterate over Key-Value-Pairs in Windows Batch迭代 Windows Batch 中的键值对
【发布时间】:2019-02-10 16:07:52
【问题描述】:

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

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-pairs 并通过它们进行迭代,所以我为每一对发送一个请求。我似乎无法弄清楚如何批量创建字典。

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

【问题讨论】:

    标签: windows dictionary batch-file cmd key-value


    【解决方案1】:

    可以使用以下方法保存环境变量及其值:

    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 文章。

    【讨论】:

      猜你喜欢
      • 2011-05-28
      • 1970-01-01
      • 2021-03-30
      • 1970-01-01
      • 2023-03-06
      • 1970-01-01
      • 2016-01-04
      • 1970-01-01
      • 2020-06-02
      相关资源
      最近更新 更多