批处理 FOR参数/F之tokens详解

(四)tokens=x,y,m-n 提取列

格式:

FOR /F "tokens=x,y,m-n" %%I IN (Command1) DO Command2

用法:

一句话总结:提取列。

通俗讲,共同提取每一行的第m小节的内容。

因此,可以用该命令来指定提取文本信息。

tokens=有时表示提取全部。

tokens=m表示提取第m列。

tokens=m,n表示提取第m列和第n列。

tokens=m-n表示提取第m列至第n列。

Tokens=*表示删除每行前面的空格。忽略行首的所有空格。

tokens=m*提取第m列以后的所有字符,星号表示剩余的字符。

tokens=m,*提取第m列以后的所有字符,星号表示剩余的字符。

输出变量的个数由定义了的tokens决定。

在 FOR 语句中显式声明 %%i。使用tokens= 隐式声明%%j 和%%k。只要不会引起试图声明高于字母“z”或“Z”的某个变量,则使用tokens= 可以指定最多 26 个输出变量。

接着前面的例子“静夜思”。

如果我要提取第三小节“举头望明月”,如何做到?

@echo off

for /f "delims=, tokens=3" %%i in (静夜思.txt) do echo %%i

pause>nul

讲解:

首先用delims=,表示命令要用逗号作为诗句的分隔符将四句分成四小节。然后用tokens=3提取第三小节,即“举头望明月”了。

delims=和tokens=共用一对双引号,如果单独用双引号,则FOR命令返回的只能是它们之中的一个。因为在第一节说过,FOR是逐一读取命令的,将delims和tokens分开后,FOR只能一次读取一个,不能一次全部读取。

注意:

Tokens常和delims一起使用。

首先,一行内容被delims用分割符号如逗号等分隔成许多小段或小节。

然后,tokens才能提取每行之间对应的这些小段或小节——列。具体看下面例子。

例:提取前面例子文本“a.txt”中每行的第三段内容“ccc”、“kkk”、“ggg”、“考试”。

@echo off

for /f "skip=1 delims=,, tokens=3" %%i in (a.txt) do echo %%i

pause>nul

注意:为什么kkk不出现呢?

例:如何屏蔽掉文本“a.txt”中的标点符号?

@echo off

for /f "skip=1delims=,, tokens=1-4" %%i in (a.txt) do echo %%i %%j %%k %%l

pause>nul

讲解:

%%i %%j %%k %%l是输出变量,它的个数由tokens后面的(m-n)决定,一般有(n-m+1)个,但不能超过Z。

并且%%后面的字母存在先后顺序,%%a %%b是顺向,倒过来则是逆向的。

代行号的tokens=m*,星号表示m后面的所有剩余的列。

例:

for /f "tokens=*" %%i in (a.txt) do echo %%i

讲解:

没有指定具体的列,"tokens=*"将提取全部列,后面只需一个输出变量%%i。

例:

for /f "tokens=2*" %%i in (a.txt) do echo %%i %%j

讲解:

"tokens=2*"提取第二列以后的所有字符,星号表示剩余的字符。输出变量%%i对应于2的输入变量,%%j对应于星号的输入变量。

注意:

这里没有使用delisms但却以空格分隔了,是因为FOR默认空格是做分隔符的。

例:屏蔽掉“易经.txt”中的标点符号:

@echo off

for /f "tokens=1-5 delims=:," %%a in (易经.txt) do echo %%a %%b %%c %%d %%e

pause>nul

讲解:

当delims定义了两个分隔符“:”和“,”时,提取列要用到tokens。

有五个列,所以tokens要定义提取第一列至第五列,即1-5,相应地,后面需要五个输出显示变量%%a %%b %%c %%d %%e。你也可以这样修改,避免过多的变量符号【补充?】

你也可以将最后多余的句号定义为分隔符“delims=:,。”将其屏蔽掉。

练习:

1、 请简单说说tokens的作用

2、 Tokens=1,3-5后面的输出变量需要多少个?

3、 请使用tokens提取下面网页的标题《硬盘知识及故障大总汇(页 2)》:

手机,3G手机,智能手机,手机电影,手机软件,手机游戏,铃声,主题,图片,电子书,手机维修,手机大全,手机报价,下载,智能手机的测评,使用心得 硬盘知识及故障大总汇(页 2) - 电脑技术交流区 - 3g365智能手机论坛 - powered by Discuz! Archiver.mht

(0)

相关推荐

  • 批处理for命令使用指南

    FOR这条命令基本上都被用来处理文本,但还有其他一些好用的功能! 看看他的基本格式(这里我引用的是批处理中的格式,直接在命令行只需要一个%号) FOR 参数 %%变量名 IN (相关文件或命令) DO 执行的命令 参数:FOR有4个参数 /d   /l   /r   /f   他们的作用我在下面用例子解释 %%变量名 :这个变量名可以是小写a-z或者大写A-Z,他们区分大小写,FOR会把每个读取到的值给他; IN:命令的格式,照写就是了; (相关文件或命令) :FOR要把什么东西读取然后赋值给变

  • 浅谈PL/SQL批处理语句:BULK COLLECT与FORALL对优化做出的贡献

    我们知道PL/SQL程序中运行SQL语句是存在开销的,因为SQL语句是要提交给SQL引擎处理这种在PL/SQL引擎和SQL引擎之间的控制转移叫做上下文却换,每次却换时,都有额外的开销 请看下图: 但是,FORALL和BULK COLLECT可以让PL/SQL引擎把多个上下文却换压缩成一个,这使得在PL/SQL中的要处理多行记录的SQL语句执行的花费时间骤降请再看下图: 下面详解这爷俩 ㈠ 通过BULK COLLECT 加速查询 ⑴ BULK COLLECT 的用法 采用BULK COLLECT可

  • 使用批处理for命令清除事件查看器所有Windows EventLog日志

    以前装完系统后要做个Ghost,为了达到完美,每次做Ghost前都会手动清除 事件查看器所有Windows EventLog日志. 后来使用了Windows 2008 r2/Win7后,这事变的复杂多了,所以也就没管了. 再后来有同事问到如何把他们全部清除,因为一个一个清,在Microsoft一级有很多目录,要想完全清除得半小时,并且清除后又有了,不实用. 再到今天,我在玩Hyper-V时,总看到一堆Error,鉴于之前给公司做的持续交付里,批处理大显身手,所以想应该可以使用批处理来实现, Go

  • 批处理中常用命令介绍(Echo、rem、goto、call、pause、if、for)

    一.echo命令 (echo图文版) 1. Echo :显示当前ECHO的状态:ECHO ON 或者ECHO OFF .2. ECHO ON :ECHO状态设为ON,将显示命令行(如每行前的C:\>等类似标志).3. ECHO OFF:CHO状态设为OFF,将不显示命令行(如每行前的C:\>等类似标志) .4. ECHO 字符串 :将输入的字符串显示在CMD屏幕上.5. ECHO 字符串 &ECHO 字符串 - :&,类似and的意思,逻辑运算,用来显示多行数据.6. ECHO

  • 批处理FOR 中的Delims和Tokens总结

    在For命令语句的参数F中,最难理解的就是Delims和Tokens两个选项,本文简单的做一个比较和总结. "For /f"常用来解析文本,读取字符串.分工上,delims负责切分字符串,而tokens负责提取字符串.如果把字符串当作蛋糕,Delims像刀子,用来切蛋糕,tokens像叉子,用来取切好的蛋糕.下面我们用实例来进行理解. 把以下内容保存为文本文件"歌曲列表.txt",注意扩展名为".txt": 序号.歌手名-歌曲名.后缀名 1.饶天

  • cmd forfiles 从文件夹或树中选择要进行批处理的文件(方便批量删除n天前的文件)

    FORFILES [/P pathname] [/M searchmask] [/S] [/C command] [/D [+ | -] {yyyy-MM-dd | dd}] 描述: 选择一个文件(或一组文件)并在那个文件上 执行一个命令.这有助于批处理作业. 参数列表: /P pathname 表示开始搜索的路径.默认文件夹是当前工作的 目录 (.). /M searchmask 根据搜索掩码搜索文件.默认搜索掩码是 '*'. /S 指导 forfiles 递归到子目录.像 "DIR /S&q

  • 关于批处理中FOR语句的使用说明与学习技巧

    批处理 bat中的for命令的作用,非常的不错,可以节省很多效率,它可以读取文章的没一行,循环执行ping命令,老探索端口,学习批处理如果不学习for将是个遗憾,希望大家多看看for 命令的实际应用的例子,如果只看简单的基础的使用方法,而缺少实际应用的话,再多的基础也不成,一定先看实例再看基础,带着问题去看基础,相信很快大家就可以上手了,本站有不少这样的资源,大家可以搜下下面我就把for命令的基本参数整理下,大家在学习的时候可以在dos下打for /?来查看帮助,大家都是这样过来的 For 对一

  • 批处理 FOR参数/F之tokens详解

    (四)tokens=x,y,m-n 提取列 格式: FOR /F "tokens=x,y,m-n" %%I IN (Command1) DO Command2 用法: 一句话总结:提取列. 通俗讲,共同提取每一行的第m小节的内容. 因此,可以用该命令来指定提取文本信息. tokens=有时表示提取全部. tokens=m表示提取第m列. tokens=m,n表示提取第m列和第n列. tokens=m-n表示提取第m列至第n列. Tokens=*表示删除每行前面的空格.忽略行首的所有空格

  • SpringBoot进行参数校验的方法详解

    目录 介绍 1.SpringBoot中集成参数校验 1.1引入依赖 1.2定义参数实体类 1.3定义校验类进行测试 1.4打开接口文档模拟提交数据 2.参数异常加入全局异常处理器 3.自定义参数校验 3.1创建自定义注解 3.2自定义校验逻辑 3.3在字段上增加注解 3.4体验效果 4.分组校验 4.1定义分组接口 4.2在模型中给参数分配分组 4.3体现效果 介绍 在日常的接口开发中,为了防止非法参数对业务造成影响,经常需要对接口的参数进行校验,例如登录的时候需要校验用户名和密码是否为空,添加

  • C++中构造函数的参数缺省的详解

    C++中构造函数的参数缺省的详解 前言: 构造函数中参数的值既可以通过实参传递,也可以指定为某些默认值,即如果用户不指定实参值,编译系统就使形参取默认值.在构造函数中也可以采用这样的方法来实现初始化. #include <iostream> using namespace std; class A { public : A(int aa=0,int bb=00); //在声明构造函数时指定默认参数 int volume( ); int a; int b; }; int main( ) { A

  • jQuery中通过ajax调用webservice传递数组参数的问题实例详解

    下面通过实例给大家说明比较直观些,更方便大家了解. 本人的项目中通过jquery.ajax调用webservice. 客户端代码如下: $.ajax({ url: "test/xxx.asmx", type: 'POST', dataType: 'xml', timeout: , data: { name: "zhangsan", tags: ["aa", "bb", "cc"] }, error: fun

  • java 用泛型参数类型构造数组详解及实例

    java 用泛型参数类型构造数组详解及实例 前言: 前一阵子打代码的时候突然想到一个问题.平时我们的数组都是作为一个参数传入方法中的,如果我们要想在方法中创建一个数组怎么样呢?在类型明确的情况下,这是没什么难度的.如果我们传入的参数是泛型类型的参数呢? public static <T> T[] creArray (T obj){ T[] arr = new T[10]; } 像上面这种用T来直接new数组的方法是错误的,会编译时出现一个:Cannot create a generic arr

  • 对python3 中方法各种参数和返回值详解

    如下所示: # -*- coding:utf-8 -*- # Author: Evan Mi # 函数 def func1(): print('in the func1') return 0 # 过程 def func2(): print('in the func2') """ 多个值用逗号分割后返回,会分装到一个tuple中返回, 接收的时候,如果使用一个变量接收,那么这个接收变量就是一个tuple类型的 如果接收的时候也用逗号分割多个值来接收,那么可以分别对应返回tupl

  • SpringBoot实战之高效使用枚举参数(原理篇)案例详解

    找入口 对 Spring 有一定基础的同学一定知道,请求入口是DispatcherServlet,所有的请求最终都会落到doDispatch方法中的ha.handle(processedRequest, response, mappedHandler.getHandler())逻辑.我们从这里出发,一层一层向里扒. 跟着代码深入,我们会找到org.springframework.web.method.support.InvocableHandlerMethod#invokeForRequest的

  • C语言函数基础教程分类自定义参数及调用示例详解

    目录 1.  函数是什么? 2.  C语言中函数的分类 2.1 库函数 2.1.1 为什么要有库函数 2.1.2 什么是库函数 2.1.3 主函数只能是main()吗 2.1.4常见的库函数 2.2 自定义函数 2.2.1自定义函数是什么 2.2.2为什么要有自定义函数 2.2.3函数的组成 2.2.4 举例展示 3. 函数的参数 3.1 实际参数(实参) 3.2  形式参数(形参) 4. 函数的调用 4.1 传值调用 4.2  传址调用 4.3 练习 4.3.1. 写一个函数判断一年是不是闰年

  • SpringBoot常见get/post请求参数处理、参数注解校验及参数自定义注解校验详解

    目录 springboot常见httpget,post请求参数处理 PathVaribale获取url路径的数据 RequestParam获取请求参数的值 注意 GET参数校验 POSTJSON参数校验 自定义注解校验 总结 spring boot 常见http get ,post请求参数处理 在定义一个Rest接口时通常会利用GET.POST.PUT.DELETE来实现数据的增删改查:这几种方式有的需要传递参数,后台开发人员必须对接收到的参数进行参数验证来确保程序的健壮性 GET一般用于查询数

  • pytorch  网络参数 weight bias 初始化详解

    权重初始化对于训练神经网络至关重要,好的初始化权重可以有效的避免梯度消失等问题的发生. 在pytorch的使用过程中有几种权重初始化的方法供大家参考. 注意:第一种方法不推荐.尽量使用后两种方法. # not recommend def weights_init(m): classname = m.__class__.__name__ if classname.find('Conv') != -1: m.weight.data.normal_(0.0, 0.02) elif classname.

随机推荐