#name:find_lack.pl
#function:找到缺少的铃音id
#use:
# 1、放在铃音ftp服务器的根路径下,需要提供一个文件,就是s50ring表对应的信息,铃音的allindex,ringid
# 2、s50ring.txt: allindex,ringid select allindex||','||ringid from s50ring where conditions
# 3、程序使用办法:进入命令行 find_lack.pl s50ring.txt (s50ring.txt 名字可以不同,但是要放在同一路径下,文件内容及格式见上一条)
#author:wang.zhihong1@zte.com.cn 20050627 Rev 1.0
use strict;
use warnings;
use File::Path;
use File::Basename;
use File::Spec::Win32;
use File::Find;
use File::Copy;
use Cwd;
my $numargs = @ARGV;
if ($numargs != 1){
print "usuage: $0 arg1n";
print "eg: $0 s50ring.txtn";
exit;
}
my $filename;
my %existwav;
my $target=getcwd;
sub wanted{
if (-f $File::Find::name){
if ($File::Find::name=~/.wav/){
$_=$File::Find::dir;
$filename=basename($File::Find::name);
$existwav{$filename}=$_;
}
}
}
#检索该铃音ftp路径下所有的铃音文件名称以及其对应的路径
find(&wanted,$target);
my %ringfile;
my %ringinfo;
my ($allindex,$ringid);
open(RINGFILE,"$ARGV[0]");
open(RESULT1,">result.txt");
open(RESULT2,">ok.txt");
while(
{
#非空格,非字母开头的,并且有,号的才记录
if( $_ !~/^$/ and $_=~/,/ ){
($allindex,$ringid)=split /,/,$_;
$allindex=trim($allindex);
$ringid=trim($ringid);
if($allindex=~/d+/){
$ringinfo{$ringid}=$allindex;
}
}
}
my $dir;
foreach $ringid (sort keys %ringinfo)
{
$allindex=$ringinfo{$ringid};
$dir="$target/".($allindex %24)."/$allindex";
if( ! -e "$dir/$ringid.wav"){
print RESULT1 "not exists $dir $ringid.wavn";
foreach my $ringfile (sort keys %existwav){
if($ringfile eq "$ringid.wav")
{
print RESULT1 "$ringfile exists $existwav{$ringfile}";
#退出循环
last;
}
}
}else{
print RESULT2 "exists $dir $ringid.wavn ";
}
}
#trim函数,用于去掉一个字符串的前后空格
sub trim
{
my $string = shift;
$string =~ s/^s+//;
$string =~ s/s+$//;
return $string;
}
close(RINGFILE);
close(RESULT1);
close(RESULT2);
print "程序执行结束,请到同一路径下察看ok.txt和result.txt !n";
执行完后生成两个文件 ok.txt,result.txt.其中ok.txt是放置正确的铃音列表,result.txt是缺少的或者不在正确位置的铃音列表,如果不在正确位置,会紧接着下面一条列出该铃音文件所在的位置。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/47869/viewspace-810914/ ,如需转载,请注明出处,否则将追究法律责任。