perl删除Windows下的图片缓存缩略图(Thumbs.db)

摘要:
当我接手之前由他人完成的项目时,我发现*。db未在SVN中的忽略中处理,导致提交图像的缓存缩略图文件。只要打开图像文件夹,就意味着Thumbs.db已更改/usr/bin/purlusestract;使用警告;my$path=“C:/FlexApp/xx”;我的$filecount=0;subpare_Env{my$path=$_[0];#或使用my=@_;@_,如参数my$subpath;my$handle;if{#当前路径是否为目录如果{while{if(!”;}}}}closedir;}返回$filecount;}my$count=parse_Env$path;my$str=“已删除文件总数:”.$count;打印$str;控制台上的结果输出:

     接手以前别人做的项目,发现SVN里的ignore里并没有对*.db处理,导致图片的缓存缩略文件都被提交了,而我只要打开图片文件夹,就意味着Thumbs.db发生了改变。

要做的事情有两个:

一、更改svn的设置,以后不再提交Thumbs.db文件

二、批量删除指定目录下的Thumbs.db文件

所以用perl写了一个,代码是在之前的 perl遍历目录 做了一些修改,主要有两点自己注意了:

一、文件路径,Windows下默认为“\  ”而linux下则是”/”, 所以统一改为”/”

二、比较两个字符串相等需要使用eq 而不是 == (==返回数值相等,而eq返回的是字符串相等)

三、unlink删除文件,需要指定文件的完整路径

四、perl中的else if 写法为elsif 没有那个“e”

五、perl正则匹配方式为 =~ 或 !~

完整的代码如下,需要更改规则可以修改代码中的这一段

image 

#!/usr/bin/perl
use strict;
use warnings;
 
my $path = "C:/FlexApp/xx";
my $filecount = 0;
 
sub parse_env {
     my $path = $_[0]; #或者使用 my($path) = @_; @_类似javascript中的arguments
     my $subpath;
     my $handle;
 
     if (-d $path) {#当前路径是否为一个目录
         if (opendir($handle, $path)) {
             while ($subpath = readdir($handle)) {
                 if (!($subpath =~ m/^\.$/) and !($subpath =~ m/^(\.\.)$/)) {
                     my $p = $path."/$subpath";
 
                     if (-d $p) {
                         parse_env($p);
                     } elsif ($subpath eq "Thumbs.db") {
                         ++$filecount;
                            print "The file path:".$p."------------The file name:$subpath\n";
                         unlink($p) or warn "failed on $subpath:$!";
                     }
                 }
             }
             closedir($handle);
         }
     }
 
     return $filecount;
}
 
my $count = parse_env $path;
my $str = "删除文件的总数:".$count;
 
print $str;

控制台上输出的结果:

image

免责声明:文章转载自《perl删除Windows下的图片缓存缩略图(Thumbs.db)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Linux的scp命令as3 模拟“抛”的动作下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

JAVA项目中关于字典学习,和缓存搭配使用的方法

字典数据是什么? 这里说了字典不是软件工程中说的数据字典。 字典数据:用于动态设置某对象的属性是属于在一个可列举的数据范围内的某一类型数据,使用字典类型作为该类别属性的唯一标识 如:用户类型:学生,老师,家长,校长等 有什么作用? 字典数据由两个表组成:字典类型表 dict_type,字典类型数据表 dict_data 这个数据相当于java中的枚举类,可以...

关于CacheLookup一个有趣的问题

今天写一个与其他系统进行物料同步的接口,通过COM Business Connector调用Axapta3.0的方法将数据插入到物料表中,中间发生异常,事务回滚,再次调用的时候提示刚刚发生异常的物料已经存在了,但是查看InventTable表却又看不到这条记录,用select查询却可以查询到这条记录。 应该是物料缓存导致的,重启AOS异常消失。 Invent...

2012年几大传统编程语言就业趋势分析

时间是下午三点一刻,Sarah给我发的QQ链接,我打开大概浏览了下,觉得有价值,遂发篇随笔,不求对各位博友有帮助,目的是开阔下视听,首先声明博客园原文链接如下:http://news.cnblogs.com/n/131936/。以下是全文: Regular Geek 网站近日发表了一篇文章《Traditional Programming Language J...

缓存的应用场景以及要注意的问题

什么是缓存(cache): 在项目中没有必要每次请求都查询数据库的情况就可以使用缓存,让每次请求先查询缓存,如果命中,就直接返回缓存结果,如果没有命中,就查询数据库, 并将查询结果放入缓存,下次请求时查询缓存命中,直接返回结果,就不用再次查询数据库。 缓存的作用? 缓和较慢存储的高频请求,缓解数据库压力,提升响应速率。 为什么缓存可以提高响应速度? 因为缓存...

离线存储

最近由于找工作一直没时间也没有精力更新博客,找工作真是一件苦逼的事情啊。。。不抱怨了,我们来看看HTML5的新特性---离线存储吧。 总的来说坑多 随着Web App的发展,越来越多的移动端App使用HTML5的方式来开发,除了一些HybridApp以外,其他一部分Web App还是通过浏览器来访问的,通过浏览器访问就需要联网发送请求,这样就使得用户在离线的...

转:Java工程师成神之路~(2018修订版)

转:http://www.hollischuang.com/archives/489 阿里大牛珍藏架构资料,点击链接免费获取 针对本文,博主最近在写《成神之路系列文章》,分章分节介绍所有知识点。欢迎关注。 主要版本 更新时间 备注 v1.0 2015-08-01 首次发布 v1.1 2018-03-12 增加新技术知识、完善知识体系 一、...