Как читать данные JSON в пакетном скрипте - PullRequest
0 голосов
/ 12 июня 2019

У меня есть файл JSON с именем "Config.json", который выглядит следующим образом:

{ "RunEnvironment": "DEV"}

В пакетном файле в том же каталоге я хочу прочитать значение элемента «RunEnvironment». Мой пакетный скрипт будет выглядеть так:

if [jsonElement] == 'DEV' ( :: do something )

Может кто-нибудь показать мне, как это сделать?

Ответы [ 3 ]

1 голос
/ 12 июня 2019

Например, в PowerShell вы можете сделать:

> If((Get-Content '.\Config.json'|ConvertFrom-Json).RunEnvironment -eq 'DEV'){"is DEV:Whatever"}
is DEV:Whatever

Чтобы быть в теме в строке cmd

> for /f "tokens=1,2 delims=:{} " %A in (Config.json) do @If "%~B"=="Dev" @Echo (%~A = %~B)
(RunEnvironment=DEV)

В пакетном файле

@Echo off
for /f "tokens=1,2 delims=:{} " %%A in (Config.json) do (
    If "%%~B"=="Dev" Echo (%%~A=%%~B^)
)

Echo (%%~A=%%~B^) можно заменить тем, что вы планируете делать.

1 голос
/ 12 июня 2019

Если все, что вам нужно сделать, это выполнить определенную команду, только если значение RunEnvironment равно DEV, тогда это должно быть все, что вам нужно, (из или) :

"%__APPDIR__%FindStr.exe" /IRC:"\"RunEnvironment\":\ \ *\"DEV\"" "Config.json">NUL 2>&1&&Echo Your command here

Вы просто замените Echo Your command here намеченной командой.

0 голосов
/ 12 июня 2019

Йо может сделать таким образом

@echo off 
set string={ "RunEnvironment": "DEV" }

for /f "tokens=3,5" %%a in ('echo %string%') do set d=%%~a 
if "%d%" == "DEV" echo %d%   
pause & goto :EOF
...