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

首页 > 脚本专栏 > perl 更新日期: 2016-02-26
这篇文章主要介绍了Perl实现删除Windows下的图片缓存缩略图Thumbs.db,本文实现了批量删除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正则匹配方式为 =~ 或 !~

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

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

代码如下:

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

控制台上输出的结果:

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


> 本站内容系网友提交或本网编辑转载,其目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请及时与本网联系,我们将在第一时间删除内容!

相关文章
  • 64位windows系统下安装Memcache缓存
    64位windows系统下安装Memcache缓存
    这篇文章主要介绍了64位windows系统下安装Memcache缓存的相关资料,需要的朋友可以参考下最近要玩Memcache,所以需要Windows 64位下搭建Memcache的开发调试环境,记录下自己安装搭建的过程,发现比Linux中搭建简单多了. 这里是我用Windows 7 64Bit安装Memcache的过程 1.安装PHP.Mysql以及Apac ...
  • Windows下bat批处理脚本使用telnet批量检测远程端口小记
    Windows下bat批处理脚本使用telnet批量检测远程端口小记
    这篇文章主要介绍了Windows下bat批处理脚本使用telnet批量检测远程端口小记,需要的朋友可以参考下多年没写过批处理了,来新公司的第一个case却是需要写一个bat脚本,批量更新采集agent的配置文件,其中就涉及到远程IP的端口检测.本以为会和Linux一样可以简单判断: 一.借助工具 于是我优先开启懒人法则,找其他替代工具.果然,在Windows ...
  • windows下安装nodejs及框架express
    windows下安装nodejs及框架express
    express是一个开源的node.js框架,初学者使用express可以快速的搭建一个Web项目,express中已经集成了Web的http服务器创建.请求和文件管理以及Session的处理等功能,所以express是非常适合初学者的入门学习,这篇文章通过两种方式介绍windows下安装nodejs及框架express以下通过两种方式介绍windows下安 ...
  • android上的一个网络接口和图片缓存框架enif简析
    android上的一个网络接口和图片缓存框架enif简析
    android上的一个网络接口和图片缓存框架enif详细介绍:底层网络接口采用apache的httpclient连接池框架.图片缓存采用基于LRU的算法等等,需要了解的朋友可以详细参考下1.底层网络接口采用apache的httpclient连接池框架: 2.图片缓存采用基于LRU的算法: 3.网络接口采用监听者模式: 4.包含图片的OOM处理(及时回收处理技 ...
  • 一键删除windows默认共享和禁止空连接的bat代码
    有些时候为了安全我们需要删除windows默认共享与禁止空连接,那么就可以参考下面的方法与代码怎样防止别人用ipc$空连接和默认共享入侵 空连接和ipc$(internet process connection)是不同的概念.空连接是在没有信任的情况下与服务器建立的会话,换句话说,它是一个到服务器的匿名访问.ipc$是为了让进程间通信而开放的命名管道,可以通 ...
猜你喜欢