Jenkin window bat批处理脚本如何 获取json对象返回值数据

news/2024/11/28 15:06:40/文章来源:https://www.cnblogs.com/pingguomang/p/18570306

前两天有这么个小需求:

在cmd中运行某测试工具后/请求某个api后,会返回一个json结果,其中有一个参数的值每次都变且经常要用,正常情况复制粘贴就好了,但这个值非常长,配上cmd的标记+粘贴的行为,就很酸爽了。然后就想快速提取这个值,顺着cmd的这个思路,就走上了批处理的道路。

借这个机会,简单跟大家交流交流怎么通过批处理命令获取数据的内容。

 

案例中的几个元素:

cmd中用的测试工具:test_tool.exe

返回的json数据(示例):

{"random_id":"wojiushigechaochangdesuijizifuchuan…wojiushigechaochangdesuijizifuchuan…wojiushigechaochangdesuijizifuchuan…wojiushigechaochangdesuijizifuchuan…qishiwobizhegehaichang","begin_time":"2018-12-29","end_time":" 2018-12-30"}。random_id的值,就是我们要获取的内容。

 咱们先来看看这简单的几行脚本:(真的很简单)

 

简单解释一下:

第2行:运行测试工具test_tool.exe,然后将数据保存到(清空已有内容的方式)系统临时目录(%temp%)的data.json中

第4行:将data.json中的数据按照“:”和“,”分列,取第二列的数据。结果如何呢?如下图:

 

第5行:去掉了上面结果中的双引号,然后将数据保存到(清空已有内容的方式)系统临时目录(%temp%)的key.txt中

第6行:打开key.txt,你就可以看到纯净版的key。好,到此为止,成功的跳过了cmd苦逼的标记+粘贴。

第7行:嗯…其实要它没用。

 

简单介绍一下这里面核心的“for /f”的这个批处理命令。“for /f”常用来解析文件,读取字符串。

通过其中的tokens和delims两个选项,能够获取一段字符串中的特定内容,delims负责切分字符串,tokens负责提取内容。

 

举例说明:

把下面的内容存个txt文件,如:“四大名著.txt”(注意保存为utf-8编码格式)

1.《三国演义》-罗贯中-明

2.《红楼梦》-曹雪芹-清

3.《水浒传》-施耐庵-明

4.《西游记》-吴承恩-明

输入不带tokens和delims的命令语句:

咱们来看看delims的作用

delims:用来告诉for每一行应该拿什么作为分隔符,默认的分隔符是空格和tab键,同时支持定义多个分隔符。

1. 先来看单个的:

新增”delims=.”,结果是按照“.”分隔,然后取前面的内容。

  

2.再看定义多个的:

改为"delims=.《-",结果按照“.”,“《”,“-”分成多列,然后取第一列的内容。

  

注:具体效果得结合tokens的应用来看

 

咱们再来看看token的作用

tokens:配合delims使用,用来告诉for应该获取哪列的数据,同时支持获取多列的数据。

1.先来看单个的:

改为"tokens=2 delims=.",结果是按照“.”分隔,然后取第二列(也就是后面)的内容。

由于按照“.”分隔只有两列,那么tokens大于2获取的数据就没有内容了

 

2.再来看个复杂点的:

改为"tokens=2 delims=.《》-",结果按照“.”,“《”,“》”,“-”分成多列,然后取第二列的内容。

 

3.获取多列的数据:

按照“.”,“《”,“》”,“-”分列后,一共有4列,全部分别获取每一列的数据。

 

另外,tokens也可以支持一些其他用法,比如通配符:

按照“.”,“《”,“》”,“-”分列后,一共有4列,获取第1列、第2列的数据,然后“*”表示获取从第3列开始之后所有的内容(包含分隔符)

 

转自https://mp.weixin.qq.com/s/PZiAgFHlq0kq-tl1e7KmeA

 

参考:https://www.cnblogs.com/songzhenhua/p/10241401.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/841667.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

jndi注入

jndi注入 jndi简单来说是提供一个查找服务,你可以通过字符串找到对应的对象。而jndi需要有服务的提供者,也就是是谁来提供这些对象。jndi只是负责名字->对象的查找,而不提供对象。 可以作为服务提供者的: Lightweight Directory Access Protocol (LDAP) 轻量级目录访问协…

《刚刚问世》系列初窥篇-Java+Playwright自动化测试-6- 元素基础定位方式-上篇 (详细教程)

1.简介 从这篇文章开始,就开始要介绍UI自动化核心的内容,也是最困难的部分了,就是:定位元素,并去对定位到的元素进行一系列相关的操作。想要对元素进行操作,第一步,也是最重要的一步,就是要找到这个元素,如果连元素都定位不到,后续什么操作都是无用功,都是扯淡,因此…

【类的默认成员函数】构造函数析构函数【C++】

【类的默认成员函数】构造函数&&析构函数【C++】 任何一个类在我们不写的情况下,都会自动生成6个默认成员函数构造函数:初始化(不是开空间!) 日常实操中最好自己写一个!!!!!!!! Date() {_year = 1;_month = 1;_day = 1; }特点 (1)函数名和类名相同 (2)…

Notepad++汉化教程

Notepad++系统只带了中文语言包,不需要像其他软件一样破解 1、打开Notepad++(通过文本文件右键选择以Notepad++打开或者找到Notepad++的快捷方式打开)。 2、菜单栏找到settings–>Preferences(首选项)。 3、找到General 右侧Localization选择简体中文,可以看到语言直接变…

文档解析Docling、Marker测评

Docling https://github.com/DS4SD/docling 环境安装 直接使用文档中的 pip install docling无法使用,因为torch和nvidia过高,与当前服务器版本不匹配,最好是低于当前服务器版本比较保险python第三方库中nvidia开头的版本需要小于12.2,如果使用12.4无法使用 安装步骤: pip…

explicit关键字【C++】

explicit关键字【C++】 用来修饰只有一个参数的类构造函数,以表明该构造函数是显式的,而非隐式的 禁止类对象之间的隐式转换,以及禁止隐式调用拷贝构造函数 隐式类型转换 int i = 1; double d = i;d被i赋值时 【编译器会做】 在中间产生一个临时变量 再通过这个临时对象进行…

快手观看时长建模:CREAD

将观看时长作为连续值预测,会带来“回归问题”,即会放大对异常值和潜在预测偏差的敏感性,常见的一种方法是把时长分段转为分类问题来预估,CREAD正是提出了一种回归转分类的处理方法。 CREAD的流程如下图所示,把观看时长分为M个桶,在每个桶内预估 P(y>t|x)的概率 经过推…

.NET9 EFcore支持早期MSSQL数据库 ROW_NUMBER()分页

前言 NET程序员是很幸福的,MS在上个月发布了NET9.0RTM,带来了不少的新特性,但是呢,我们是不是还有很多同学软硬件都还没更上,比如,自己的电脑还在跑Win7,公司服务器还在跑MSSQL2005-2008的! 这不就引入了我们本文要探索的问题,因为MS早在EFcore3.1后就不再内置支持ROW_NUMBER()…

hhdb数据库介绍(9-8)

高可用服务 计算节点负载均衡 HHDB Server支持多计算节点集群的节点自治。以下简称计算节点集群中Primary状态的计算节点为Primary计算节点;计算节点集群中Secondary状态的计算节点为Secondary计算节点。Primary和Secondary计算节点的数据服务完全对等,均支持所有类型的数据操…

Nuxt.js 应用中的 webpack:done 事件钩子

title: Nuxt.js 应用中的 webpack:done 事件钩子 date: 2024/11/26 updated: 2024/11/26 author: cmdragon excerpt: webpack:done 钩子用于处理 Webpack 编译完成后的逻辑。在 Webpack 编译的所有任务完成后,这个钩子会被调用,通常用于通知开发者编译的状态、执行清理工作…

ChatGPT的应用场景:开启无限可能的大门

ChatGPT的应用场景:开启无限可能的大门 随着人工智能技术的快速发展,自然语言处理领域迎来了前所未有的突破。其中,ChatGPT作为一款基于Transformer架构的语言模型,凭借其强大的语言理解和生成能力,在多个行业和场景中展现出了广泛的应用潜力。以下是ChatGPT八个最具代表性…

宝塔多PHP环境中如何切换composer的php环境

1.发现问题 宝塔上有php7.3与7.4两个版本;系统的默认执行命令是php7.3版本;目标项目环境是7.4;执行composer下载时,提示需要php环境版本为7.4; 2.解决问题宝塔上:网站》高级设置》PHP命令行版本 可以直接修改命令行版本;解决!!!!