У меня есть список пар ключ-значение, представляющий имена настроек и их значение.
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-пар и итерации по ним, поэтому я отправляю запрос для каждой пары. Я не могу понять, как создать словарь в пакетном режиме.
Если вы считаете, что для такого рода задач лучше подходит инструмент, отличный от пакетного, сообщите мне об этом.





Сохранение переменных среды с их значениями можно выполнить с помощью:
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"
Вот и все. Отсроченное расширение не следует включать при обратном считывании имен переменных среды и их значений из файла настроек для правильного чтения значений с одним или несколькими восклицательными знаками.
Чтобы понять, какие команды используются и как они работают, откройте окно командной строки, выполните в нем следующие команды и внимательно прочитайте все страницы справки, отображаемые для каждой команды.
echo /?endlocal /?for /?set /?setlocal /?Прочтите также статью Microsoft о Использование операторов перенаправления команд.