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

接手以前别人做的项目,发现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;

控制台上输出的结果:

时间: 2024-11-05 18:27:01

Perl实现删除Windows下的图片缓存缩略图Thumbs.db_perl的相关文章

批量删除Windows下的.svn文件的技巧

  在使用SVN工具的时候会生成一些以"svn"作为后缀的文件,而且每个文件夹下都有,数量很多的. 如果想删除Windows下的.svn文件夹,通过手动删除的渠道是最麻烦的,因为每个文件夹下面都存在这样的文件.--幸好,今天看到了aw同学提供的好办法: 在记事本输入以下代码并命名为以.reg作为扩展名的文件: Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE/SOFTWARE/Classes/Folder/shell/De

Win8系统如何关闭自动创建图片缓存缩略图功能?

  Win8系统如何关闭自动创建图片缓存缩略图功能? 1.首先,请大家按下Windows徽标键+R键,打开运行命令框,然后输入"gpedit.msc"命令,打开组策略编辑器; 2.进入Windows组策略编辑器以后,依次双击左侧栏目的"用户配置--管理模板"选项; 3.进入Windows管理模板以后,查看子目录下的"Windows组件"文件夹,同时在该文件夹下找到"文件资源管理器"; 4.在文件资源管理器子目录选项下,找到&q

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

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

怎么样快速删除windows下的大量文件

  说道删除电脑中的文件或是文件夹,大家都会觉得是一件十分简单的事情,而且方法也不少,比如说Shift+Del直接跳过回收站删除,或是直接拉到回收站等等,但是这些删除方法只是针对文件或是文件夹比较小的情况,才会快速好用,若是对那些几G或是十几G的文件夹,用这样的方法删除的话,就要花费很长的时间,所以为了让大家能够快速的删除你想要删除的文件,下面小编就带大家一起一看一个好方法吧! 下面是我测试出的最快的删除大文件夹的方法 del /f/s/q dirname> nul rmdir /s/q dir

win7/win xp怎么批量删除图片缩略图Thumbs.db文件

方法如下: 双击桌面"我的电脑",打开菜单栏"工具"选项,点击"查看"选项卡,内部列表有个"不缓存缩略图"选项,取消掉即可,下次在浏览带图片的文件夹就不会自动生成缩略图Thumbs.db文件了. 但是对于已经生成的Thumbs.db文件我们可以使用以下方法进行批量删除: @echo off del c:Thumbs.db /f/s/q/a del d:Thumbs.db /f/s/q/a del e:Thumbs.db /f/

格式 webp-谷歌的webp图片格式如何在windows下使用java转换成其他格式

问题描述 谷歌的webp图片格式如何在windows下使用java转换成其他格式 参考了http://blog.csdn.net/geeklei/article/details/41147479,可以在linux下成功执行,但是在windows下编译出dll和jar始终无法正确运行java.lang.IllegalArgumentException: image == null!无法识别这样的图片格式 解决方案 Java webp转jpg webp是最近google推出的新的图片格式 googl

如何在Vista下正确删除$WINDOWS.OLD文件夹

当你从早期版本的 Windows 升级到 WindowsVista时,vista会把以前的系统文件转移到一个叫WINDOWS.OLD 的文件夹中.当你不想用你早期版本的 Windows 时,就想把WINDOWS.OLD 文件夹删除,但是不是就直接用右键删除就可以了呢??答案是错误的!当你直接删除这个文件夹时,可以系统WindowsExplorer 会出现崩溃.此时,你会收到类似以下的错误信息: 错误应用 Explorer.EXE, 6.0.5756.0 版本. 时间戳 0x452999fb, 错

如何批量删除Windows7下的WINDOWS.OLD文件夹

本节教程目的是使用批处理批量删除Win7下WINDOWS.OLD文件夹.WINDOWS.OLD这个文件夹是您在安装升级Windows7时对以前操作系统的备份目录,可能会占用你硬盘的几个甚至几十个G的空间! WINDOWS.OLD文件夹可不能直接删除,Win7自己做的备份肯定有点特殊,如果你直接删除,哦,会导致Windows 7的Explorer(资源管理器)崩溃.那么该如何操作轻松的删除WINDOWS.OLD文件夹呢? 打开记事本,然后把下面的内容粘贴进去 rd/S/Q c:WINDOWS.OL

删除Win7下WINDOWS.OLD文件夹

  在Windows7系统中,当用户采用覆盖安装系统的方式时,系统会自动在原系统硬盘分区内生成一个"Windows.old"的文件,将原系统内的"Windows"."Program Files"."Users"这三个目录中的文件转移到"Windows.old"文件夹内. 这也就是为什么Windows.old文件夹体积如此之大的原因了,他将之前的系统文件和安装的程序文件都做了备份,这也是微软出于人性化的考虑,