zoukankan      html  css  js  c++  java
  • 在CMD中使用for命令对单行字符串做分割的方法

    我们都知道CMD中的for命令是执行循环命令的,数据来源可以是一个文件,一个命令的结果或一个字符串,只有这3种来源

    如果是一个文件则对这个文件的所有字符串进行循环处理

    如果是一个命令结果,那么对这个命令的结果的每一行做循环处理

    如果是一个字符串,那么对这个字符串只作一次处理

    如:FOR /F ["options"] %variable IN ("string") DO command [command-parameters]

    即使使用"Delims=[字符] Tokens=x"的功能也是只是把当前行的进行分割后的某一个项进行传递到循环语句中

    而不能循环的对一行字符串进行逐个循环,想要实现类似与C#中的string.Split('字符')的功能

    最后研究出的方法就是使用goto语句强制循环整个For语句的方法来实现

    代码如下:

    @echo off&title 字符串切割
    set string=aaa/bbb/ccc
    :split
    rem 把要切割字符串按照/符号分割开,并取得分割后的第一个的值
    rem 再把分割后的剩下的值重赋予环境变量string,并重新执行for
    rem 第一次 %string%=aaa/bbb/cc
    rem 第二次 %string%=bbb/ccc
    rem 第三次 %string%=ccc
    rem 第四次 %string%=空,结束goto,退出
    for /f "tokens=1,* delims=/" %%i in ("%string%") do (
      echo %%i
      set string=%%j
    )
    if not "%string%"=="" goto split
    pause

     
    运行结果:

    —— 原文发表于2012-3-11 08:57

    用原本是循环的for命令来切割字符串,这纯属于奇技淫巧,CMD中批处理的功能很弱,但得益于其语法异常宽松,可以玩出各种花样

    这也是我为什么喜欢脚本语言的很大一部分原因。:)

  • 相关阅读:
    HTTP状态码
    NSData NSDate NSString NSArray NSDictionary 相互转换
    NSDictionary to jsonString || 对象转json格式
    git 上传本地文件到github
    NSAssert用法
    深入理解GCD(一)
    ug-Assertion failure in [MyClass layoutSublayersOfLayer:]
    构建之法阅读笔记01
    学习进度
    四则运算程序
  • 原文地址:https://www.cnblogs.com/xxcanghai/p/4584117.html
Copyright © 2011-2022 走看看