2013-10-07 19 views
4

我這個小config.json讀取和設置的Windows命令行中的變量從以.json文件

{ 
    "version":"0.2.2", 
    "test":true 
} 

我想在窗口中的命令來讀取這個文件,並設置變量從json文件對應的鍵和值線,也許是這樣的僞代碼:

for /f %%A in (config.json) do (

    SET key = value 
) 

echo %VERSION% 
echo %TEST% 

我怎麼會做呢?

+0

顯示您在輸出期望的精確數據值,因爲你的數據格式不一樣。 – foxidrive

+0

我期望的輸出是:'0.2.2'和'true' – Kriem

回答

6

這解決了作爲提出的問題:

@echo off 
setlocal EnableDelayedExpansion 
set c=0 
for /f "tokens=2 delims=:, " %%a in (' find ":" ^< "config.json" ') do (
    set /a c+=1 
    set val[!c!]=%%~a 
) 
for /L %%b in (1,1,!c!) do echo !val[%%b]! 
pause 

此版本將輸出version = 0.2.2test = true
唯一的變化是在第6行

@echo off 
setlocal EnableDelayedExpansion 
set c=0 
for /f "tokens=1,2 delims=:, " %%a in (' find ":" ^< "config.json" ') do (
    set /a c+=1 
    set val[!c!]=%%~a = %%~b 
) 
for /L %%b in (1,1,!c!) do echo !val[%%b]! 
pause 

這解決了下一個格式請求:可變-name = value

@echo off 
for /f "tokens=1,2 delims=:, " %%a in (' find ":" ^< "config.json" ') do (
    set "%%~a=%%~b" 
) 
set 
pause 

從2016年2月的請求可以用這個來解決,假設文件看起來象下面這樣:

{ 
location : "C:\\Test Folder" 
} 

批處理腳本如下

@echo off 
for /f "tokens=1,2,*" %%a in (' find ":" ^< "config.json" ') do echo "%%~c" 
pause 
+0

這很完美! – Kriem

+0

只是一個問題,如果我想輸出以下內容:'version = 0.2.2'和'test = true',我該怎麼做? – Kriem

+0

請參閱上面的我的編輯。 – foxidrive

相關問題