通过批处理命令for提取数据
前两天有这么个小需求:
在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提取数据的更多相关文章
- WINDOWS批处理命令使用大全
来源:http://www.942dn.com就是爱电脑网 WINDOWS批处理命令使用大全 批处理,也称为批处理脚本,英文译为BATCH,批处理文件后缀BAT就取的前三个字母.它的构成没有固定格式, ...
- Windows常用批处理命令 CMD BAT (CMD目录操作等dir)
Windows常用批处理 CMD BAT CMD获取文件夹下所有文件的名称并打印(输出)到指定目录 dir C:\Users\\Desktop\png\*.*/s >c:\.txt //cmd ...
- 批处理命令 BAT备份MySQL数据库
批处理命令 BAT备份MySQL数据库 作者: 字体:[增加 减小] 类型:转载 时间:2009-07-23我要评论 MySQL数据的备份工具也许有很多,在这我要给大家分享一下通过DOS批处理命令和M ...
- BATCH(BAT批处理命令语法)
bat语法备忘扩展名是bat(在nt/2000/xp/2003下也可以是cmd)的文件就是批处理文件[@more@] bat语法备忘扩展名是bat(在nt/2000/xp/2003下也可以是cmd)的 ...
- C# 动态执行批处理命令
本文转载:http://www.cnblogs.com/lenic/p/4097045.html C# 动态执行一系列控制台命令,并允许实时显示出来执行结果时,可以使用下面的函数.可以达到的效果为: ...
- DOS批处理命令判断操作系统版本、执行各版本对应语句
DOS批处理命令判断操作系统版本.执行各版本对应语句 昨天在家里试用 netsh interface ip set address 这些命令更改上网IP.DNS.网关等,今天将那些代码拿来办公室 ...
- 常用批处理命令总结3之Find和FindStr
原文:常用批处理命令总结3之Find和FindStr find 作用:从文件中收索字符串 格式:find 参数 "字符串" 路径\文件名 参数: /V 显示所有未包含指定字符串的行 ...
- 批处理命令篇--配置免安装mysql 5.6.22, 以及1067错误的一个解决方法
mysql 服务启动出现1067错误的一个解决方法: 当服务启动出现1067错误时,可查看“windows 事件查看器”,发现类似错误提示 Can't find messagefile 'F:\ ...
- .bat批处理命令的介绍
HUC = = D组 http://www.cnhonkerarmy.com/ 63707869 =====================================开始============ ...
随机推荐
- Lambda使用
说明 本文内容来自 [Java8 In Action] 一书 四种方法引用类型 类型 示例 引用静态方法 ContainingClass::staticMethodName 引用某个对象的实例方法 c ...
- Redis(RedisTemplate)使用list链表
RedisTemplate配置:https://www.cnblogs.com/weibanggang/p/10188682.html package com.wbg.springRedis.test ...
- POJ 3216 Prime Path(打表+bfs)
Prime Path Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 27132 Accepted: 14861 Desc ...
- HDU 1012 u Calculate e(简单阶乘计算)
传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1012 u Calculate e Time Limit: 2000/1000 MS (Java/Oth ...
- 『ACM C++』 PTA 天梯赛练习集L1 | 044-45
记录今日刷题 ------------------------------------------------L1-044--------------------------------------- ...
- Linux中文件函数(一)
一.stat.fstat.fstatat.lstat函数 函数的原型为: #include <sys/stat.h> int stat(const char *restrict pathn ...
- Java 8 – Map排序
前提 Map是Java中最常用的集合类之一,这里整理了关于HashMap的排序 (关于List的排序,请查看Collections.sort()的doc或源码). 将无序的HashMap借助Strea ...
- JQuery制作网页——第九章 表单验证
1. 表单验证:减轻服务器的压力.保证输入的数据符合要求: 2. 常用的表单验证:日期格式.表单元素是否为空.用户名和密码.E-mail地址.身份证号码等: 3. 表单验证的思路: 1. ...
- php的基础知识(一)
php(超文本预处理器)定义: php(外文名:php:Hertext Preprocessor,中文名:“超文本预处理器”)是一种通用的开源脚本语言.语法吸收了C语言.Java和Perl的特点,利于 ...
- 大数据学习--day08(hnapp 后台系统开发、面向对象)
hnapp 后台系统开发.面向对象 利用前面所学的知识,写一个控制台登陆注册后台界面 package sy180918.hnapp.array; import java.util.Arrays; im ...