1.重命名文件.bat@echo off //关闭回显
setlocal enabledelayedexpansion //设置延迟加载变量(概念自行百度)
for /F "delims=" %%i in ('dir /A:-D /B "*(1).*"') do ( //循环遍历当前文件夹下的文件
set a=%%i //用变量a代表文件名
set a=!a:.a=! //替换文件名中的.a字符为空,这里用了延迟变量加载,如果不用应该写成%a:.a=%
set a=!a:^(1^)=! //替换文件名中的(1)为空
rename %%i !a! //重命名文件,去掉了.a和(1)
)
知识点:
@echo off //关闭回显
setlocal enabledelayedexpansion //设置延迟加载变量(概念自行百度)
for /F "delims=" %%i in ('dir /A:-D /B "*(1).*"') do ( //循环遍历当前文件夹下的文件
set a=%%i //用变量a代表文件名
set a=!a:.a=! //替换文件名中的.a字符为空,这里用了延迟变量加载,如果不用应该写成%a:.a=%
set a=!a:^(1^)=! //替换文件名中的(1)为空
rename %%i !a! //重命名文件,去掉了.a和(1)
)
1.延迟变量加载,就是原来用%a%引用变量,改为用!a!引用,区别在与赋值顺序。前者在代码预编译的时候就被赋值,这样引用到的值就是预编译时候的值,是一致的;后者则是在代码运行时赋值
2.替换语法,在可以输出变量的地方,%变量名:被替换字符=替换字符%
3.字符串替换:拿到变量!a!怎么替换掉.a呢,总结一点:首先被替换对象必须是变量。我原先是这样写的:
这是因为有一点理解错了,最外层的%或者!,其实就是变量的引用符号,正确的写法如下:
4.在/F参数下,in后面的内容,如果用单引号包含表示命令,如果用双引号包含表示字符串,如果不包含,表示文件集合,空格分隔
5.for /F 表示解析in的内容,后面可以加解析的规则,如"delims="指定了解析内容为:分隔符为空,默认分隔符百度说是空格和制表符,这样在读取in的内容(如果是字符串)时就不会每次读取到空格就结束。
6.转义字符^
7.dir /A 表示指定属性,D表示目录属性,-表示排除,/B表示使用空格展示列表
2.替换语法,在可以输出变量的地方,%变量名:被替换字符=替换字符%
3.字符串替换:拿到变量!a!怎么替换掉.a呢,总结一点:首先被替换对象必须是变量。我原先是这样写的:
%!a!:.a=%
这是因为有一点理解错了,最外层的%或者!,其实就是变量的引用符号,正确的写法如下:
!a:.a=!
4.在/F参数下,in后面的内容,如果用单引号包含表示命令,如果用双引号包含表示字符串,如果不包含,表示文件集合,空格分隔
5.for /F 表示解析in的内容,后面可以加解析的规则,如"delims="指定了解析内容为:分隔符为空,默认分隔符百度说是空格和制表符,这样在读取in的内容(如果是字符串)时就不会每次读取到空格就结束。
6.转义字符^
7.dir /A 表示指定属性,D表示目录属性,-表示排除,/B表示使用空格展示列表
2.查找目录下的文件是否包含指定文本.bat,批量删除文件.bat
@echo off
for /f "delims=" %%i in ('dir /b /s "E:\space\xfundsJY\ecas\ecas\WEB-INF\classes\*.properties"') do (
findstr /m "查找的文本" %%i & del /F /S %%i
)
rem 查找完毕
pause
知识点:1.findstr是find的扩展,findstr "a b" 搜索a或者b,findstr /C:"a b" 搜索文本“a b”,/m 如果包含文本,只打印文件名
2.del /F 强制删除 /S包含子目录