在cmd中,一想到文件遍历,大家都会想到耳熟能详的dir命令。但是dir,存在着很大的漏洞!
在获取某个指定文件夹中多个后缀名文件时,细心的人就会发现,往往无法单独指定文件夹内的文件,而是连当前目录的文件也遍历了。
比如,我要获取“文件”文件夹内的四个后缀名文件,*.jpg *.jpeg *.png *.mp4。出现的结果就是:
找不到文件是在当前路径没找到,而我们已经指定了在文件目录里面遍历。无论你是找一个还是多个后缀名文件都会连你当前路径也遍历,除非你不指定后缀名,单纯就dir那个文件夹。
这对于只在某个文件夹中进行操作是硬伤,有人可能会想,那借用findstr帮忙查找呢,比如:这样确实是成功了,dir再也没把当前目录一起遍历。但是也是有弊端,因为文件名是支持”.”这个符号的,那么如果有个文件名称是这样的1.png.rar。那findstr也会当做.png的文件获取到。
如图最后一个lnk文件也被搜索到了:
这时候就可以用上findstr强大的功能参数“$”了,这个符号意味着你搜索的参数是在行的结尾,那么后缀名都在结尾,这样就完美的识别是搜索后缀名了。
bug修复就是这样啦,下面还可以分享一个不借用findstr的小技巧给大家,这个方法只适用于只搜索一个后缀名。
只需要把路径上带后缀名锁定死就好了。如果我指定搜索png,参数和效果如图:
想要学习更多cmd批处理技巧,关注我,不会让你失望的。