perl心得(三)-小成

经过一天的突击和不断的摸索,感谢CCTVMTV,终于找到了一个俺很需要的例子,这就应了那句话了,例子才是王道啊

  一下是小弟写的一个文件批处理的脚本,通过两天的时间(我倍感惭愧,两天就写了这么点东西)。简单说下吧,其目的主要是为了:

  需要处理的文件夹->打开此文件夹->读取子文件夹名称(例如:东1、东2、东3、西1、西2->将首字母相同的文件夹copy到以该首字母开头的文件夹中(例如:将1、东2、东3”copy的文件夹中)另外要在数据库中做下处理,这里不就贴出来了。代码如下:

#!/usr/bin/perl -W
#
# File: file_edit.pl
# Author:
赵振钧
# License: GPL-2

use strict;
use warnings;
use File::Copy;

#设定系统当前路径
my $file_path="F:/
测试";
local *wbwj_dir;
local *sjwj_dir;
local *KTXXWD;

foreach my $wjcl_dir($file_path)
 {

#打开目录
opendir(KTXXWD,$wjcl_dir)||die"error, can't open the dir";
print $wjcl_dir."/n";
#
读取目录下子目录信息
my @dir = readdir KTXXWD;
  #
对每一个子目录进行筛选
  foreach my $file (@dir)
  { 
   #
如果目录名为3个连续的字母,说明是需要处理的目录
   if ($file =~ /[a-z]{3}/)
     {
     #
打开符合条件的子目录文件夹
      opendir(sjwj_dir, $wjcl_dir."/".$file)||die"error, can't open the dir ";
        #
读取子目录文件夹下的文件
        my @dir1 = grep(!/.*/..*/i,readdir sjwj_dir);#
正则表达式,过滤掉目录列表中的".",".."
        #
对每一个子目录进行筛选
        foreach my $file_var (@dir1)
        {
         #
如果子文件夹的首字母存在与目录中
         #
拷贝文件夹到对应的文件首字母目录中
         
            my $original = $wjcl_dir."/".$file."/".$file_var;   
            opendir(wbwj_dir,$original)||die"error, can't open the dir";
            my @external_files = readdir wbwj_dir;
            my $file_first = substr($file_var,0,2);
            if(!(-e $file_first) and length($file_var) > 2)
      {
       #
如果本地路径不存在,则创建
       mkdir($wjcl_dir."/".$file."/".$file_first)||die"can not create dir_first:".$wjcl_dir."/".$file."/".$file_first."/n";
       
       }
      if(!(-e $file_first."/".$file_var) and length($file_var) > 2)
      {
       #
如果本地路径不存在,则创建
       mkdir($wjcl_dir."/".$file."/".$file_first."/".$file_var)||die"can not create dir_var:$wjcl_dir."/".$file."/".$file_first."/".$file_var";
       }
            
            foreach my $external_file (@external_files)
            {
             if(length($external_file) > 2)
             {
             my $old_copy = $original."/".$external_file;
              my $new_copy = $wjcl_dir."/".$file."/".$file_first."/".$file_var;
             
            if(length($file_var) > 2)
            {
                     #
如果本地路径不存在,则创建
                     #print "file_var=".$file_var."/n";
                     #print "file_first2=".$file_first."/n";
           
            #
拷贝文件到本地目录下
            copy($old_copy, $new_copy) or die "Copy failed: $!";
                      print "Copy the file,from $original to $new_copy/n";
             }              
            } 
          }    
           closedir(wbwj_dir);
           }
         
        }
      #closedir(sjwj_dir);
      print "/n";
    }
   closedir(KTXXWD)
};

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值