字符运算历来是编程中的重要内容,如何拼接字符,如何截取字符,如何判断字符是否存在,如何判断两个字符串是否相同,成为了编程任务中的重要环节。因此,我结合网络的资料和个人的实践经验来总结一下。

Windows 批处理中字符的基本常识

  1. 批处理中变量的赋值符号两侧不能包含空格,如 set str_date='20200820',这与很多编程规范是相悖的。

  2. 批处理中的字符可以不添加双引号,但是如果包含空格的话,必须使用引号,,如 set str_name="20200820 Windows 批处理的字符运算经验总结"

  3. 自定义变量使用 % 来包围来进行引用,即 %变量% ;而 Windows 内置变量(含文件路径变量扩展)则使用 % 符号来引导,即 %内置变量

截取字符串

一般性的字符截取

  1. 基本语法: %**变量名**:~**起点位置**,**截取数量|终点位置**%

起点位置 :如果为正数,那么就是从左往右截取,而如果为负数,那么就是说从右向左截取;不过无论为正还是为负,截取结果都是不包含处于 起点位置 的那个字符的。

截取数量|终点位置 :如果为正数,那么就是单纯的 截取数量 ;如果为负数,那么应当表述为 终点位置 ,而且,与 起点位置 对应,截取结果也是不包含该负数所对应的字符的,即上述的 -5 对应的是终点位置为右侧第 6 个字符截止。

举例说明,如下:

echo on
set ifo=abcdefghijklmnopqrstuvwxyz0123456789
echo %ifo%
echo.
echo 截取前4个字符:%ifo:~0,4%
echo 截取年度:%date:~0,4%
echo.
echo 截取最后2个字符:%ifo:~-2%
echo 截取星期:%date:~-2%
echo.
echo 截取第一个到倒数第6个字符:%ifo:~0,-5%
echo 截取日期(含分隔符):%date:~0,-3%
echo.
echo 从第5个字符开始,截取2个字符:%ifo:~4,2%
echo 截取月份:%date:~5,2%
echo 截取天数:%date:~8,2%
echo.
echo 从倒数第14个字符开始,截取5个字符:%ifo:~-14,5%
echo 截取秒数:%time:~3,2%
echo.
echo 当前时间是:%time% 即 %time:~0,2%点%time:~3,2%分%time:~6,2%秒%time:~9,2%厘秒
pause

当然,我最常用的就是对日期、时间等内置变量的操作。

文件路径字符的截取

主要依靠 Windows 内置的扩展变量用法来进行。

执行 for /? 可以查看路径扩展的

举例说明,如下(注意,需要另存为 test.bat 文件形式执行):

@echo off
echo 当前路径的完整字符串:%0
echo 当前路径的完整字符串(如被双引号包围,去除双引号):%~0
echo 当前路径的所在分区:%~d0
echo 当前路径的目录:%~p0
echo 文件名:%~n0
echo 扩展名:%~x0
echo 文件属性:%~a0
echo 修改时间:%~t0
echo 文件大小:%~z0
pause

路径处理,往往都配合 for 函数进行操作。

未完待续…

版本说明

变更日志

  1. 2020/08/20 10:49:23,创建文章。

参考索引

  1. CharyGao.DOS命令(cmd)批处理:替换字符串、截取字符串、扩充字符串、获取字符串长度[EB/OL].https://www.cnblogs.com/Chary/p/No0000A4.html, 2020/08/20.