当前位置: 首页 > news >正文

Windows下批处理删除文件

最近我使用Maven的时候会出现下载jar包不成功的现象,然后需要把它删除然后重新下载,但是有时候文件过多,一个个删除太花费时间,所以用bat的批处理会很舒服。

bat的语法我之前没遇到过,然后我是边学习边试验,写出了一个简陋版的批处理文件。

我的思路是:

  • 1、遍历目标文件夹。
  • 2、找到目标文件后,删除该文件夹(通过观察下载失败的jar可知,当出现sha1-in-progress后缀的文件时,即该文件下载失败)。

很多知识我都是从写个批处理脚本来帮忙干活–遍历文件夹&字符串处理这篇博客中学习到,非常感谢分享。

遍历文件夹

for循环即可遍历文件夹

命令:for [参数] %%变量名 in (匹配符) do (执行的命令)

参数可以分为/d,/r,/l,/f,无参

  • 无参 : 遍历当前文件夹下的文件
  • /d : 遍历当前文件夹下的子文件夹
  • /r : 深度遍历当前文件夹下的所有文件
  • /l : 迭代数值范围,使用迭代变量设置起始值,然后逐步执行一组范围的值,直到该值超过所设置的终止值
  • /f : 用于解析文件内容

例如:

for /r C:\Users\Panlf\.m2\repository %%i in (*.sha1-in-progress) do (echo %%i
)

上述的意思深度遍历C:\Users\Panlf\.m2\repository文件下的所有文件,找出文件后缀名为sha1-in-progress的文件并打印。

当然也可以输出到文件中:

for /r C:\Users\Panlf\.m2\repository %%i in (*.sha1-in-progress) do (echo %%i >> E:\m.txt
)

可以将结果输出到E盘的m.txt文件中,注意不能使用>,不然只会输出一个结果到文件中,必须使用>>

删除文件夹

上面是遍历文件,现在要删除文件夹。

bat删除有两个命令rd、del。

命令:rd,删除目录 参数:/s
说明:用于删除目录树,即删除目录及目录下的所有子目录和文件。 参数:/q XP中的增强DOS命令 
说明:进行删除操作时将取消确认。 命令:del,删除文件或目录 
参数:/f 
说明:使用此参数可删除只读文件。 参数:/s、/q
说明:即删除目录及目录下的所有子目录和文件。同时使用参数/Q,可取消删除操作时的系统确认。 参数:/a 
说明:删除指定属性或指定属性以外的文件,/AR、/AH、/AS、/AA表示删除只读、隐藏、系统、存档文件,
/A-R、/A-H、/A-S、/A-A表示删除除只读、隐藏、系统、存档以外的文件。 

最后我完成一个简陋版:

@echo off
setlocal enabledelayedexpansion
set /p input_path=请输入要要操作的文件夹:
echo 获取到的地址:%input_path%
for /r %input_path% %%i in (*.sha1-in-progress) do (set pan_name=%%~diset del_name=%%~piset true_name=!pan_name!!del_name!echo !true_name!rd /s /q !true_name!
)
pause

注意

1、%%i根据不同的for使用方式,内容也有所不同:

%%~fi:表示获取该文件的绝对路径信息
%%~di:表示获取该文件所在的盘符
%%~pi:表示获取该文件的路径,不包含盘符的信息
%%~ni:表示获取该文件的文件名,不包含扩展名信息
%%~xi:表示获取该文件的扩展名
%%~ti:表示获取该文件的上次修改时间
%%~zi:表示获取该文件的大小

2、在for循环中定义中临时变量的时候

在for循环定义set pan_name=%%~di,如果直接echo pan_name会报echo关闭状态,不能使用。
所以需要第一启用变量延迟功能:setlocal enabledelayedexpansion,第二调用变量的时候使用!pan_name!

3、字符串拼接

set true_name=!pan_name!!del_name!
http://www.lryc.cn/news/119901.html

相关文章:

  • html中文件上传储存到本地路径
  • 第九章 SpringBoot 自动配置原理 入门
  • String str=new String(“tango“) 创建了几个对象?
  • 引入三阶失真的非线性放大器的模拟输出及使用中值滤波器去除峰值研究(Matlab代码实现)
  • 【观察者设计模式详解】C/Java/JS/Go/Python/TS不同语言实现
  • 精细解析中文公司名称:智能分词工具助力地名、品牌名、行业词和后缀提取
  • 网络编程(JavaEE初阶系列10)
  • Git常用的指令
  • LoadRunner(2)
  • CTF之逆向之阿里巴巴
  • Labview控制APx(Audio Precision)进行测试测量(五)
  • 在单元测试中使用Jest模拟VS Code extension API
  • django boostrap html实现可拖拽的左右布局,鼠标拖动调整左右布局的大小或占比
  • 谈谈闭包和闭包使用场景
  • MATLAB算法实战应用案例精讲-【图像处理】边界框锚框
  • 04什么场景要用到微服务
  • .NET SqlSuger 简单介绍,超快开发数据库
  • SpringBoot复习:(28)【前后端不分离】自定义View
  • springcloud3 springcloud stream的学习以及案例(了解)
  • Kotlin理解内置函数
  • 手机app测试
  • Centos部署Git
  • k8s 控制器
  • 谷歌关闭跨域限制.(生成一个开发浏览器),Chrome关闭跨域
  • 实践指南-前端性能提升 270% | 京东云技术团队
  • 8月11日上课内容 nginx的多实例和动静分离
  • 腾讯云CVM服务器端口在安全组中打开!
  • k8s、docker添加daemon.json添加“exec-opts“: [“native.cgroupdriver=systemd“]后无法启动的问题
  • React组件性能优化实践
  • SpringBoot复习:(29)静态资源的配置路径