zoukankan      html  css  js  c++  java
  • 批处理Delims的基本知识

    在For命令语句的参数F中,最难理解的就是Delims和Tokens两个选项,本文简单的做一个比较和总结。
    “For /f”常用来解析文本,读取字符串。分工上,delims负责切分字符串,而tokens负责提取字符串。如果把字符串当作蛋糕,Delims像刀子,用来切蛋糕,tokens像叉子,用来取切好的蛋糕。下面我们用实例来进行理解。
    把以下内容保存为文本文件“歌曲列表.txt”,注意扩展名为“.txt”:
    序号、歌手名-歌曲名.后缀名
    1、饶天亮-玫瑰爱人.wma
    2、高一首-我不愿错过.mp3
    3、黃凱芹-傷感的戀人.MP3
    4、黄灿-黄玫瑰.lrc
    5、黎姿-如此这般的爱情故事.mp3
    代码1:显示全部内容
    @echo off
    for /f %%i in (歌曲列表.txt) do echo %%i
    pause>nul
    运行结果:
    序号、歌手名-歌曲名.后缀名
    1、饶天亮-玫瑰爱人.wma
    2、高一首-我不愿错过.mp3
    3、黃凱芹-傷感的戀人.MP3
    4、黄灿-黄玫瑰.lrc
    5、黎姿-如此这般的爱情故事.mp3
    讲解:
    如果不使用参数“/f”,运行结果只显示括号里的文字字符“歌曲列表.txt”,而不能读取文本文件“歌曲列表.txt”中的内容。可见,“/f”是解析文本字符串的好工具。
    一、delims
    假如只要序号,不要歌手名、歌曲名和后缀名,如何办到?
    代码2:默认提取第一列
    @echo off
    for /f "delims=、" %%i in (歌曲列表.txt) do echo %%i
    pause>nul
    运行结果:
    序号
    1
    2
    3
    4
    5
    讲解:
    "delims=、"表示定义顿号“、”为分隔符,并用该分隔符“、”切分文本字符串。字符串就是“歌曲列表.txt”里的内容,也就是文件里的文字和标点符号。
    该顿号是原文中就有的。除了顿号“、”,原文中还有减号“-”和点号“.”,因此你也可以用它们来做分隔符。
    代码3:用减号“-”做分隔符
    @echo off
    for /f "delims=-" %%i in (歌曲列表.txt) do echo %%i
    pause>nul
    运行结果:
    序号、歌手名
    1、饶天亮
    2、高一首
    3、黃凱芹
    4、黄灿
    5、黎姿
    讲解:
    因为,当减号“-”被用做分隔符时,每行内容被减号“-”分隔成前后两半,默认只显示前半部分,而后半部分连同分隔符减号“-”都被忽略(省略)了。
    代码4:用点号“.”做分隔符
    @echo off
    for /f "delims=." %%i in (歌曲列表.txt) do echo %%i
    pause>nul
    运行结果:
    序号、歌手名-歌曲名
    1、饶天亮-玫瑰爱人
    2、高一首-我不愿错过
    3、黃凱芹-傷感的戀人
    4、黄灿-黄玫瑰
    5、黎姿-如此这般的爱情故事
    讲解:
    默认情况下,单纯使用delims而不用tokens时,只显示第一个分隔符前的内容,第一个分隔符和第一个分隔符后面的内容将被忽略。
    代码5:定义多个分隔符
    @echo off
    for /f "delims=、-." %%i in (歌曲列表.txt) do echo %%i
    pause>nul
    运行结果:
    序号
    1
    2
    3
    4
    5
    讲解:
    原因是,当定义顿号“、”、减号“-”和点号“.”三个标点符号为分隔符后,原文被分隔成四个部分。
    如第二行“1、饶天亮-玫瑰爱人.wma”将被分隔成“1”、“饶天亮”、“玫瑰爱人”和“wma” 四个部分。
    从第一行到最后一行,每行的每个部分对应下来相当于一个竖列。因此,原文就有“序号”、“歌手名”、“歌曲名”、“后缀名”四列。
    一般情况下,只读取第一列的内容。后面的内容需要用tokens选项提取。

  • 相关阅读:
    Sprinig.net 双向绑定 Bidirectional data binding and data model management 和 UpdatePanel
    Memcached是什么
    Spring.net 网络示例 codeproject
    jquery.modalbox.show 插件
    UVA 639 Don't Get Rooked
    UVA 539 The Settlers of Catan
    UVA 301 Transportation
    UVA 331 Mapping the Swaps
    UVA 216 Getting in Line
    UVA 10344 23 out of 5
  • 原文地址:https://www.cnblogs.com/Jian-Zhang/p/6066158.html
Copyright © 2011-2022 走看看