在Windows系统中批量删除或转移指定文件以及过期文件
系统设置2021-07-13本文二维码
系统中的某些文件可能会经常被我们遗忘,比如下载下来的压缩包,解压后就不会再管它,等到空间占用过大后才想到来清理,本文会说明通过Windows系统的forfiles命令清理文件。
forfiles命令主要用于帮助我们批量选择文件并执行处理命令。
/p 后指定搜索路径,也就是从哪里开始搜索文件,默认为当前目录。
/m 指定搜索掩码,比如我们指定搜索zip文件,可以设置为 *.zip,而要搜索名称以xstui开头的文件可以使用xstui*,搜索名称包含xstui的文件可以使用*xstui*,名称以xstui结尾的png文件可以使用*xstui.png等等。
/s 如果使用了这个,命令会递归搜索子目录。
/c 对搜索到的符合条件的文件要执行什么命令,比如"cmd /c del @file"(删除文件),后面跟着的命令必须使用双引号括起来,@file代表文件名,是命令提供的变量之一,还有@ext(扩展名)、@isdir(是否是目录)、@fsize(字节单位的文件大小)等等。
/d 以修改日期设置条件来选择文件,比如 -30 代表修改日期在30天之前(包含30天)的文件,+2021/7/12 代表修改日期在2021年7月12日之后的文件。
如下图所示,我们使用命令 forfiles /m *.txt /c "cmd /c echo @file" /d -2021/3/8 在当前目录搜索修改日期在2021/3/8之前的txt文件,并使用echo命令将其名称打印了出来。
如果要删除这些文件,将echo命令替换为del命令即可,要转移这些文件,则可以使用move命令,比如我们将上述选择的文件转移到当前目录的new文件夹下。
如果要转移到其他目录建议使用绝对路径。
通过上面的命令我们可以很轻松的清理过期文件。如果要搜索子目录,添加/s即可,要搜索所有类型的文件可以移除上述命令中的/m及其参数。
如果要在多个不同的目录中搜索文件并执行相同的命令,可以使用循环处理。
for %d in ("d:\xstui","d:\xstui1","c:\xstui2") do forfiles /p %d /s /m *.txt /c "cmd /c echo @path" /d -2021/3/8
上述命令会在"d:\xstui","d:\xstui1","c:\xstui2"这三个不同的目录中搜索修改日期在2021/3/8之前的txt文件,并执行echo命令打印出其完整路径,使用了/s让其搜索子目录。
对不同的指定扩展名的文件做相同处理也可以用上面的方式,还可以组合起来使用。
利用forfiles命令提供的变量,我们可以做进一步的判断以及处理,比如使用@ext对不同扩展名的文件做不同的处理,使用命令forfiles /?查看帮助,里面说明了其提供的所有变量。
如果要经常对同样的目录执行同样的命令,可以将这些命令保存为批处理文件。新建文本文档,输入所有要执行的命令,保存后将文件扩展名由txt更改为cmd或者bat。