windows脚本实战

这篇博客介绍了如何使用Windows批处理脚本来重命名文件。通过`@echo off`关闭回显,并利用`setlocal enabledelayedexpansion`进行变量延迟加载,配合`for /F`循环遍历文件,将所有名字中包含`.a`(1)的文件进行重命名,去除这两个部分。此外,还提及了查找目录下文件包含指定文本以及批量删除文件的脚本知识。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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)
)
知识点:

1.延迟变量加载,就是原来用%a%引用变量,改为用!a!引用,区别在与赋值顺序。前者在代码预编译的时候就被赋值,这样引用到的值就是预编译时候的值,是一致的;后者则是在代码运行时赋值
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包含子目录


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值