批处理有着具有非常强大的字符串处理能力,其功能绝不低于C语言里面的字符串函数集。批处理中可实现的字符串处理功能有:截取字符串内容、替换字符串特定字段、合并字符串、扩充字符串等功能。下面对这些功能一一进行讲解。
  【 1、截取字符串 】
  截取字符串可以说是字符串处理功能中最常用的一个子功能了,能够实现截取字符串中的特定位置的一个或多个字符。举例说明其基本功能:
  =========================================
  @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
  =========================================
  【 2、替换字符串 】
  替换字符串,即将某一字符串中的特定字符或字符串替换为给定的字符串。举例说明其功能:
  =========================================
  @echo off
  set aa=伟大的中国!我为你自豪!
  echo 替换前:%aa%
  echo 替换后:%aa:中国=中华人民共和国%
  echo aa = %aa%
  set "aa=%aa:中国=中华人民共和国%"
  echo aa = %aa%
  pause
  =========================================
  对于上面的例子有一点说明,对比两个echo aa = %aa%可以发现,如果要修改变量aa的内容的话,就需要将修改结果“%aa:中国=中华人民共和国%”赋值给变量aa。上面的字符串截取也有着同样的特点。
  【 3、字符串合并 】
  其实,合并字符串就是将两个字符串放在一起就可以了。举例说明:
  =========================================
  @echo off
  set aa=伟大的中国!
  set bb=我为你自豪!
  echo %aa%%bb%
  echo aa=%aa%
  echo bb=%bb%
  set "aa=%aa%%bb%"
  echo aa=%aa%
  pause
  =========================================
  同样,如果要改变变量aa的内容的话,就需要将合并结果“%aa%%bb%”赋值给变量aa。
  【 4、扩充字符串 】
  “扩充”这个词汇来自于微软自己的翻译,意思就是对表示文件路径的字符串进行特殊的处理,具体功能罗列如下:
  =========================================
  ~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:\Windows\PPP\a.btx
  call :deal aaa %aa% "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来表示的,因而可以直接进行扩充。

转自:http://www.cnblogs.com/ZC_Mo-Blog/archive/2009/12/28/1633766.html

最新文章

  1. 优化SQLServer--表和索引的分区(二)
  2. 关于C#中的 static
  3. JAVA中的NIO(一)
  4. WPF MVVM模式
  5. hdu 2077
  6. 在Windows下通过命令行或者.bat文件统计一个目录中文件数量
  7. Android万能适配器base-adapter-helper的源代码分析
  8. 原生Js封装的弹出框-弹出窗口-页面居中-多状态可选
  9. java学习书籍推荐
  10. 【转载】stm32的GPIO八种工作模式
  11. [PHP基础]有关isset empty 函数的面试题
  12. ubuntu16.04系统深度学习开发环境、常用软件环境(如vscode、wine QQ、 360wifi驱动(第三代暂无))搭建相关资料
  13. 渗透测试学习 九、 MSsql注入上
  14. [TJOI2015]弦论
  15. 【C++】不要想当然使用resize
  16. Lua中Table的学习
  17. TDDL与Spring Boot集成Version报错——跟踪与解决
  18. VSTO学习(二)——Excel对象模型
  19. select 的字段为空,给他显示默认值
  20. 悲催的IE6 七宗罪大吐槽(带解决方法)第一部分

热门文章

  1. CodeForcesGym 100502G Outing
  2. Java 实现有序链表
  3. Http协议简介【转】
  4. 交换工资 SQL
  5. JavaScript学习总结(9)——JS常用函数(一)
  6. LightOJ 1291 Real Life Traffic
  7. using the easy connect naming method 简单连接測试
  8. iOS 基于第三方QQ授权登录
  9. 算法导论——lec 12 平摊分析与优先队列
  10. POJ 1442 Black Box treap求区间第k大