Perl实现删除Windows下的图片缓存缩略图Thumbs.db

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

要做的事情有两个:

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

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

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

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

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

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

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

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

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

代码如下:

#!/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;

控制台上输出的结果:

(0)

相关推荐

  • Perl实现删除Windows下的图片缓存缩略图Thumbs.db

    接手以前别人做的项目,发现SVN里的ignore里并没有对*.db处理,导致图片的缓存缩略文件都被提交了,而我只要打开图片文件夹,就意味着Thumbs.db发生了改变. 要做的事情有两个: 一.更改svn的设置,以后不再提交Thumbs.db文件 二.批量删除指定目录下的Thumbs.db文件 所以用perl写了一个,代码是在之前的 perl遍历目录 做了一些修改,主要有两点自己注意了: 一.文件路径,Windows下默认为"\  "而linux下则是"/", 所以

  • Python实现删除windows下的长路径文件

    目录 1.文章背景 2.使用 python 删除文件 3.文件系统关于长路径文件的相关定义 4.改造 python 程序,删除长路径文件 5.总结思考 1.文章背景 近期,笔者所在公司的某业务系统的存储临近极限,服务器马上就要跑不动了,由于该业务系统A包含多个子系统A1.A2.A3 ... An,这些子系统的中间存储文件由于设计原因,都存储在同一个父级目录之内,唯一不同的是,不同子系统产生的文件和文件夹的名字都以该子系统名开始.如A1子系统产生的文件命名方式均为A1xxxxxx, A2子系统产生

  • 图文详解Windows下使用Redis缓存工具的方法

    一.简介 redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合)和zset(有序集合). 这些数据类型都支持push/pop.add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的.在此基础上,redis支持各种不同方式的排序.与memcached一样,为了保证效率,数据都是缓存在内存中.区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记

  • IE6下CSS图片缓存问题解决方法

    用一句代码即可搞定: 复制代码 代码如下: document.execCommand("BackgroundImageCache", false, true); 当然为了其它浏览器上能正常通过,需要做下判断后调用,才更安全: 复制代码 代码如下: if(Browser.isIE6){ try{ document.execCommand("BackgroundImageCache", false, true); } catch(e1){} } 平台检测代码可以这样写,

  • windows环境下Redis+Spring缓存实例讲解

    一.Redis了解 1.1.Redis介绍: redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorted set –有序集合)和hash(哈希类型).这些数据类型都支持push/pop.add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的.在此基础上,redis支持各种不同方式的排序.与memcached一样,为了保证效率,数据都是缓存在内

  • Windows下MySQL服务无法停止和删除的解决办法

    我在 Windows 操作系统上,使用解压压缩包的方式安装 MySQL.这是安装的具体方法:点击这里.在执行如下命令: mysqld --install MySQL --defaults-file=[ini配置文件绝对路径] 在执行上面那个命令的时候,输入了错误的配置文件路径.虽然系统可能会返回 success .并且命令 mysqld --initialize 也可以执行并生成数据文件.但是当我执行 net start mysql 的时候,系统会一直提示服务正在启动.原因是我的配置文件路径错误

  • windows下Python实现将pdf文件转化为png格式图片的方法

    本文实例讲述了windows下Python实现将pdf文件转化为png格式图片的方法.分享给大家供大家参考,具体如下: 最近工作中需要把pdf文件转化为图片,想用Python来实现,于是在网上找啊找啊找啊找,找了半天,倒是找到一些代码. 1.第一个找到的代码,我试了一下好像是反了,只能实现把图片转为pdf,而不能把pdf转为图片... 参考链接:https://zhidao.baidu.com/question/745221795058982452.html 代码如下: #!/usr/bin/e

  • Windows下MySQL 8.0.29 安装和删除图文教程

    Windows下MySQL的安装和删除,供大家参考,具体内容如下 安装Mysql 1 下载mysql 下载地址1:下载地址2 2 安装教程 2.1配置环境变量 变量名:MYSQL_HOME 变量值:D:\software\programming\environment\mysql-8.0.29-winx64 // bin目录的上级目录 一定记得要确定 保存一定记得要确定 保存一定记得要确定 保存一定记得要确定 保存 2.2生成data文件 以管理员身份运行cmd 进入D:\software\pr

  • python在Windows下安装setuptools(easy_install工具)步骤详解

    本文讲述了python在Windows下安装setuptools(easy_install工具)的方法.分享给大家供大家参考,具体如下: [题外话介绍下setuptools] setuptools 是一组由PEAK(Python Enterprise Application Kit)开发的 Python 的 distutils 工具的增强工具,可以让程序员更方便的创建和发布 Python的egg 包,特别是那些对其它包具有依赖性的状况. 由 setuptools 创建和发布的包看起来和基于 di

  • Windows下Redis的安装使用图解

    Redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorted set --有序集合)和hash(哈希类型).这些数据类型都支持push/pop.add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的.在此基础上,redis支持各种不同方式的排序.与memcached一样,为了保证效率,数据都是缓存在内存中.区别的是redis会周期性的把更新的数

随机推荐