前两天有这么个小需求:

在cmd中运行某测试工具后,会返回一个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键,同时支持定义多个分隔符。

先来看单个的:

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

  

再看定义多个的:

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

  

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

 

咱们再来看看token的作用

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

先来看单个的:

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

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

 

再来看个复杂点的:

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

 

获取多列的数据:

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

 

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

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

 

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

通过批处理命令for提取数据的更多相关文章

  1. WINDOWS批处理命令使用大全

    来源:http://www.942dn.com就是爱电脑网 WINDOWS批处理命令使用大全 批处理,也称为批处理脚本,英文译为BATCH,批处理文件后缀BAT就取的前三个字母.它的构成没有固定格式, ...

  2. Windows常用批处理命令 CMD BAT (CMD目录操作等dir)

    Windows常用批处理 CMD BAT CMD获取文件夹下所有文件的名称并打印(输出)到指定目录 dir C:\Users\\Desktop\png\*.*/s >c:\.txt //cmd ...

  3. 批处理命令 BAT备份MySQL数据库

    批处理命令 BAT备份MySQL数据库 作者: 字体:[增加 减小] 类型:转载 时间:2009-07-23我要评论 MySQL数据的备份工具也许有很多,在这我要给大家分享一下通过DOS批处理命令和M ...

  4. BATCH(BAT批处理命令语法)

    bat语法备忘扩展名是bat(在nt/2000/xp/2003下也可以是cmd)的文件就是批处理文件[@more@] bat语法备忘扩展名是bat(在nt/2000/xp/2003下也可以是cmd)的 ...

  5. C# 动态执行批处理命令

    本文转载:http://www.cnblogs.com/lenic/p/4097045.html C# 动态执行一系列控制台命令,并允许实时显示出来执行结果时,可以使用下面的函数.可以达到的效果为: ...

  6. DOS批处理命令判断操作系统版本、执行各版本对应语句

    DOS批处理命令判断操作系统版本.执行各版本对应语句   昨天在家里试用  netsh interface ip set address 这些命令更改上网IP.DNS.网关等,今天将那些代码拿来办公室 ...

  7. 常用批处理命令总结3之Find和FindStr

    原文:常用批处理命令总结3之Find和FindStr find 作用:从文件中收索字符串 格式:find 参数 "字符串" 路径\文件名 参数: /V 显示所有未包含指定字符串的行 ...

  8. 批处理命令篇--配置免安装mysql 5.6.22, 以及1067错误的一个解决方法

    mysql 服务启动出现1067错误的一个解决方法: 当服务启动出现1067错误时,可查看“windows 事件查看器”,发现类似错误提示 Can't find messagefile 'F:\    ...

  9. .bat批处理命令的介绍

    HUC = = D组 http://www.cnhonkerarmy.com/ 63707869 =====================================开始============ ...

随机推荐

  1. 学习“CC攻击”

    什么是CC攻击? 网上有一个定义:攻击者借助代理服务器生成指向受害主机的合法请求,实现拒绝服务攻击的攻击方式称为CC(Challenge Collapsar)攻击.[据说CC的原意为Chanlleng ...

  2. ORM优缺点

    优点: 1.提高了开发效率.由于ORM可以自动对Entity对象与数据库中的Table进行字段与属性的映射,所以我们实际可能已经不需要一个专用的.庞大的数据访问层. 2.ORM提供了对数据库的映射,不 ...

  3. Etherlab debian安装记录

    debian wheezy 7.11(虚拟机安装选择桥接网卡) #set ustc source #apt-get install sudo #nano /etc/sudoers;add userNa ...

  4. 大数据框架-HDFS

    HDFS:分布式文件系统,运行文件通过网络在多台主机分享的文件系统,分块写入(128M),适用于一次写入多次查询,不支持并发写(只能一块一块写),小文件不合适. nameNode(主节点,单个): 保 ...

  5. 随机数使用不当引发的生产bug

    前几天负责的理财产品线上出现问题:一客户赎回失败,查询交易记录时显示某条交易记录为其他人的卡号. 交易的链路如下: 出现该问题后,我们对日志进行了分析,发现主站收到的两笔流水号完全相同,然而主站却没有 ...

  6. SQL SERVER 对权限的授予GRANT、拒绝DENY、收回REVOKE

    -----对用户member授权,允许其具有对数据表person的更新和删除的操作权限:GRANT UPDATE,DELETE ON personTO member WITH GRANT OPTION ...

  7. 竞赛题解 - NOIP2018 赛道修建

    \(\mathcal {NOIP2018}\) 赛道修建 - 竞赛题解 额--考试的时候大概猜到正解,但是时间不够了,不敢写,就写了骗分QwQ 现在把坑填好了~ 题目 (Copy from 洛谷) 题 ...

  8. 09JavaScript函数

    函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块. 实例1: <!DOCTYPE html> <html> <head> <meta charset ...

  9. OpenCV-Python 人脸眼睛嘴识别

    # 识别眼睛.嘴巴.人脸 image = cv2.imread('./yong.jpg') gray = cv2.cvtColor(image,code=cv2.COLOR_BGR2BGRA) # 加 ...

  10. GitLab 基本操作

    登录 在浏览其中输入http://192.168.3.11:8888 如图1登录界面.   图1 注:第一次新增用户,会发送修改密码链接到用户的邮箱中,用户会收到如图2邮件. 图2 2. 修改密码 点 ...