【问题标题】:Read and set a variable on the Windows command line from a .json file从 .json 文件读取和设置 Windows 命令行上的变量
【发布时间】:2013-10-07 12:11:25
【问题描述】:

我有这个小config.json

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

我想读取这个文件并在窗口命令行中设置变量,对应json文件中的键和值,可能类似于这个伪代码:

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

    SET key = value
)

echo %VERSION%
echo %TEST%

我该怎么做?

【问题讨论】:

  • 在输出中显示您期望的确切数据值,因为您的数据格式不一样。
  • 我希望输出是:0.2.2true

标签: batch-file command-line


【解决方案1】:

这解决了提出的问题:

@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

这解决了下一个格式请求:variable-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

【讨论】:

  • 只是一个问题,如果我想输出以下内容:version = 0.2.2test = true,我该怎么做?
  • 我明白了。我不想成为负担,但如果我想创建以键命名的变量并将其设置为 json 文件中的键值怎么办?
  • 这是我最后一个问题的答案,对吧?设置“%%~a=%%~b”
  • 太棒了!感谢您的大力帮助! :)
  • 如果属性值中有空格怎么办?在那种情况下似乎不起作用。像 { location : "C:\\Test Folder" } 这样的代码会用这段代码回显 "location = C"。
猜你喜欢
  • 1970-01-01
  • 2015-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多