zoukankan      html  css  js  c++  java
  • [No0000A4]DOS命令(cmd)批处理:替换字符串、截取字符串、扩充字符串、获取字符串长度

    1、替换字符串,即将某一字符串中的特定字符或字符串替换为给定的字符串。举例说明其功能:
    =========================================

    @echo off
    set aa=伟大的中国!我为你自豪!
    echo 替换前:%aa%
    echo 替换后:%aa:中国=中华人民共和国%
    echo aa = %aa%
    set "aa=%aa:中国=中华人民共和国%"
    echo aa = %aa%
    pause

    =========================================

    对于上面的例子有一点说明,对比两个echo aa = %aa%可以发现,如果要修改变量aa的内容的话,就需要将修改结果"%aa:中国=中华人民共和国%"赋值给变量aa。上面的字符串截取也有着同样的特点。
    ━━━━━━━━━━━━━━━━━━━━━━━━━━
    2、截取字符串
    ━━━━━━━━━━━━━━━━━━━━━━━━━━
    截取字符串可以说是字符串处理功能中最常用的一个子功能了,能够实现截取字符串中的特定位置的一个或多个字符。举例说明其基本功能:
    =========================================

    @echo off
    set ifo=abcdefghijklmnopqrstuvwxyz0123456789
    echo 原字符串(第二行为各字符的序号):
    echo %ifo%
    echo 123456789012345678901234567890123456
    echo 截取前5个字符:
    echo %ifo:~0,5%
    echo 截取最后5个字符:
    echo %ifo:~-5%
    echo 截取第一个到倒数第6个字符:
    echo %ifo:~0,-5%
    echo 从第4个字符开始,截取5个字符:
    echo %ifo:~3,5%
    echo 从倒数第14个字符开始,截取5个字符:
    echo %ifo:~-14,5%
    pause

    =========================================

    当然,上面的例子只是将字符串处理的基本功能展示出来了,还看不出字符串处理具体有什么用处。下面这个例子是对时间进行处理。
    =========================================

    @echo off
    echo 当前时间是:%time% 即 %time:~0,2%点%time:~3,2%分%time:~6,2%秒%time:~9,2%厘秒
    pause

    =========================================

    ━━━━━━━━━━━━━━━━━━━━━━━━━━
    3、扩充字符串
    ━━━━━━━━━━━━━━━━━━━━━━━━━━
    "扩充"这个词汇来自于微软自己的翻译,意思就是对表示文件路径的字符串进行特殊的处理,具体功能罗列如下:
    =========================================
    ~I – 删除任何引号("),扩充 %I
    %~fI – 将 %I 扩充到一个完全合格的路径名
    %~dI – 仅将 %I 扩充到一个驱动器号
    %~pI – 仅将 %I 扩充到一个路径
    %~nI – 仅将 %I 扩充到一个文件名
    %~xI – 仅将 %I 扩充到一个文件扩展名
    %~sI – 扩充的路径只含有短名
    %~aI – 将 %I 扩充到文件的文件属性
    %~tI – 将 %I 扩充到文件的日期/时间
    %~zI – 将 %I 扩充到文件的大小
    %~$PATH:I – 查找列在路径环境变量的目录,并将 %I 扩充
    到找到的第一个完全合格的名称。如果环境变量名
    未被定义,或者没有找到文件,此组合键会扩充到
    空字符串
    可以组合修饰符来得到多重结果:
    %~dpI – 仅将 %I 扩充到一个驱动器号和路径
    %~nxI – 仅将 %I 扩充到一个文件名和扩展名
    %~fsI – 仅将 %I 扩充到一个带有短名的完整路径名
    %~dp$PATH:i – 查找列在路径环境变量的目录,并将 %I 扩充
    到找到的第一个驱动器号和路径。
    %~ftzaI – 将 %I 扩充到类似输出线路的 DIR
    =========================================
    以上内容引用于for /?帮助信息。其中的I代表变量I,不过需要说明的是,不是所有的变量都能够进行扩充的,有两个条件:1、该字符串代表一个文件路径;2、变量要用%x来表示,x可取a-z A-Z 0-9共62个字符中的任意一个。举例说明:
    =========================================

    @echo off
    echo 正在运行的这个批处理:
    echo 完全路径:%0
    echo 去掉引号:%~0
    echo 所在分区:%~d0
    echo 所处路径:%~p0
    echo 文件名:%~n0
    echo 扩展名:%~x0
    echo 文件属性:%~a0
    echo 修改时间:%~t0
    echo 文件大小:%~z0
    pause

    =========================================

    其中的%0是批处理里面的参数,代表当前运行的批处理的完全路径。类似的还有%1-%9,分别代表传递来的第1-9个参数。例子如下:
    ===============================================

    @echo off
    set aa=C:WindowsPPPa.btx
    call :deal aaa ?% "c c" ddd eee
    pause>nul
    exit
    :deal
    echo %%0 = %0
    echo %%1 = %1
    echo %%2 = %2
    echo %%3 = %3
    echo %%4 = %4
    echo %%5 = %5

    ===============================================
    其中,变量aa在之前是不可以扩充的,通过call命令并将aa作为参数传递给子函数:deal,将aa变量转换成了变量%1,即符合%x格式,从而可以进行字符串扩充。
    至于%x中x取a-z A-Z的形式,可以复习一下for语句,for语句里面的变量就是用%x来表示的,因而可以直接进行扩充。
    ━━━━━━━━━━━━━━━━━━━━━━━━━━
    4、获取字符串长度
    ━━━━━━━━━━━━━━━━━━━━━━━━━━
    通过循环截取字符串来获取,代码如下:
    =========================================

    @echo off
    set mystr="hello world"
    set str=%mystr%
    ::将"号替换成空格
    set "str=%str:"= %"
    :next
    if not "%str%"==" " (
    set /a num+=1
    set "str=%str:~1%"
    goto next
    )
    echo %mystr%字符串长度为:%num%
    pause

    =========================================
    运行结果(注意中文的引号)
    "hello world"字符串长度为:12

  • 相关阅读:
    ruby 二进制转十进制 Integer("0b101") = 5
    开始菜单和我的文档的我的图片及我的音乐变成 my pictrues 正常图标了
    ruby watir 莫名其妙的错误
    Excel SaveAS是去掉提示框
    apache && jboss安装
    ruby require include的区别
    ruby控制鼠标
    This error is raised because the column 'type' is reserved for storing the class in case of inheritance
    用正则表达式限制文本框只能输入数字,小数点,英文字母,汉字等各类代码
    ASP.NET 如何动态修改 Header 属性如添加 Meta 标签 keywords description!
  • 原文地址:https://www.cnblogs.com/Chary/p/No0000A4.html
Copyright © 2011-2022 走看看