最近我使用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=%%~di
set del_name=%%~pi
set 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循环中定义中临时变量的时候文章来源:https://www.toymoban.com/news/detail-649725.html
在for循环定义set pan_name=%%~di,如果直接echo pan_name会报echo关闭状态,不能使用。
所以需要第一启用变量延迟功能:setlocal enabledelayedexpansion,第二调用变量的时候使用!pan_name!
3、字符串拼接文章来源地址https://www.toymoban.com/news/detail-649725.html
set true_name=!pan_name!!del_name!
到了这里,关于Windows下批处理删除文件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!