从json文件中提取基于键的特定字符串

时间:2014-12-03 11:20:46

标签: batch-file cmd

我在Windows中运行一个命令(mycommand),返回一个json文件,我执行以下操作

<mycommand> | findstr /r InstanceId >instance.txt

返回"InstanceId": "i-59df8e93",作为输出。现在我想做的是我只想要那个始终在InstanceId:之后和,之前的部分。

如何在Windows命令提示符下执行此操作?

编辑1:我在这里取得了进展,

Instance1.txt的内容

   "InstanceId": "i-59df8e93"

我使用了以下命令:

FOR /F "tokens=1,2,3 delims=:" %G IN (instance1.txt)  DO @echo %G %I> instance1.txt

返回 "InstanceId"

我希望这两个令牌处于不同的变量中。这样我就可以提取i-59df8e93。怎么办?

1 个答案:

答案 0 :(得分:3)

参考for /f

源文件:

"InstanceId": "i-59df8e93"

您需要使用"作为分隔符并提取第3个令牌。

使用"作为分隔符的最简单方法是使用以下“技巧”(Escaping double-quote in delims option of for /Frkagerer参考答案):

  1. 使用^(只要它不在文件中)作为分隔符
  2. 交换delimstokens
  3. 的顺序

    现在,您可以使用以下命令提取i-59df8e93

    for /f delims^=^"^ tokens^=3 %a in (instance.txt) do @echo %a
    

    输出:

    i-59df8e93
    

    注意:我使用instance.txt,因为此文件是原始命令的输出。

    将此值添加到instance1.txt

    for /f delims^=^"^ tokens^=3 %a in (instance.txt) do @echo %a > instance1.txt
    

    将所有内容放在批处理文件中:

    <mycommand> | findstr /r InstanceId >instance.txt
    for /f delims^=^"^ tokens^=3 %%a in (instance.txt) do @%echo %%a > instance1.txt
    

    注意:在批处理文件中,您需要将%替换为%%