批处理笔记
批处理笔记
批处理遍历文件夹
|
|
这种写法如果目录里有文件夹则只遍历文件夹。
清空指定文件
目前我直接使用echo命令没有成功过。
间接方法:
把输出为空的命令重定向到待清空文件中,例如:
|
|
将清空当前目录下的xxx.txt。
字符串操作
取子串
|
|
从str的s位置开始取n个字符。
注意:
- 字符串下标从0开始,也就是说,s=0为从第一个字符开始。
- s可以为负,此时表示从倒数第 s个字符开始,即下标为lens-s的字符处开始。
- n也可以为负,但是此时用法有所不同,为取从s开始到lens+n-1的子串。
- 第二条与第三条可以同时使用。
子串替换
|
|
从头开始匹配,将str中所有substr替换成newstr。
注意:
- 替换是从头开始匹配,所以如果两个(或多个)符合要求的子串有重叠,只会替换第一个。
- newstr可以为空,此时表示删除所有匹配substr的子串。
文件名操作
当一个文件传入批处理脚本作为参数或者用for语句遍历文件时,还有一类特殊操作。
注意:下面的用法仅限于文件变量,普通的变量无法使用(即使它的内容是一个文件的路径也不行)
注:在批处理中,%0参数表示批处理脚本文件自身;
%1,%2等分别表示运行时给批处理脚本传入的参数
说明
以下是for /?
命令输出中关于这方面的说明。
%~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
在以上例子中,%I 和 PATH 可用其他有效数值代替。%~ 语法 用一个有效的 FOR 变量名终止。选取类似 %I 的大写变量名 比较易读,而且避免与不分大小写的组合键混淆。
示例
假设当前目录结构为"E:\cup\cat\test.bat",脚本内容如下:
|
|
输出如下:
|
|