遍历Windows Batch中的键值对

时间:2019-02-10 16:07:52

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

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

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

我想在批处理文件中对带有卷曲请求的指定设置(键)应用每个值:

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

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

1 个答案:

答案 0 :(得分:2)

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

let arr = [1, 1, 2, 2, 3, 3, 4, 5]
let remove  = [1, 3, 2, 4, 5].sort((a,b)=>a-b)

let op = arr.sort((a,b)=>a-b).filter(e => ( remove.includes(e) ? (remove.shift(), false) : true ))


console.log(op)

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

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

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

  • for /F "usebackq delims=" %%I in ("%SettingsFile%") do set "%%I"
  • echo /?
  • endlocal /?
  • for /?
  • set /?

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