perl工具-转换文件名称,完善的日志机制日志
发布时间:2020-12-16 00:35:33 所属栏目:大数据 来源:网络整理
导读:1. ?代码如下: use strict;use File::Path;use File::Basename;#############环境变量配置区#######################my $ScanFileDir = "F:chongqingchrtemp";my $TargetFileDir = "F:chongqingchrchr";my $SaveCHRDataLimit = 3;my $ScanPerio
|
1. ?代码如下: use strict;
use File::Path;
use File::Basename;
#############环境变量配置区#######################
my $ScanFileDir = "F:chongqingchrtemp";
my $TargetFileDir = "F:chongqingchrchr";
my $SaveCHRDataLimit = 3;
my $ScanPeriod = 60; #扫描周期,默认60秒
my $DeleteHistoryCHRPeriod = 1440; #删除历史数据周期,默认1440个扫描周期
my $LogFile = "..LogLog.txt";
####################################
#############全局变量#######################
my $DeleteHistoryFtpDataDay;
####################################
sub INITWork()
{
$DeleteHistoryFtpDataDay = GetDeleteDayLimit();
&CheckLogFile();
}
sub CheckLogFile()
{
my @StatLogFile = stat ($LogFile);
my $Logfilesize = $StatLogFile[7]/1024/1024;
if ($Logfilesize>50)
{
`del $Logfilesize`;
}
}
sub GetTimeStampStr()
{
my $timestr = localtime(time());
return $timestr."--";
}
sub LogMsg()
{
my $Param1 = shift;
my $Str = &GetTimeStampStr().$Param1;
`echo $Str>>$LogFile`;
}
sub CreateDirIfNeed
{
my $Dir = shift;
if (-e $Dir and -d $Dir)
{
&LogMsg("The Directory $Dir is already exists!");
return 0;
}
&LogMsg("makepath $Dir");
eval {mkpath($Dir)};
if($@)
{
&LogMsg("Make path [$Dir] failed:$@ ");
return -1;
}
return 0;
}
sub MoveFileToTargeDirName
{
my $FileName = shift;
if (-e $FileName and $FileName =~ /(d{4})(d{2})(d{2})_(d{2})(d{2})(d{2})___(.*).dat$/) #获得dat文件创建日期
{
my $TargetDir = $TargetFileDir."$1$2$3";
my $NewFileName = $TargetDir."CHR_1X_$1-$2-$3_$4-$5.dat";
&CreateDirIfNeed($TargetDir);
&LogMsg("move $FileName to $NewFileName");
`move $FileName $NewFileName`;
}
}
sub MoveCHRDFiles
{
my @CHRFiles = <$ScanFileDir*.dat>;
print @CHRFiles;
print "n";
my $ACHRFile;
foreach $ACHRFile (@CHRFiles)
{
&MoveFileToTargeDirName($ACHRFile);
}
}
sub GetDeleteDayLimit()
{
my ($sec,$min,$hour,$day,$mon,$year,$wday,$yday,$isdst)=localtime(time()-86400 * $SaveCHRDataLimit);
$day=($day<10)?"0$day":$day;
$mon=($mon<9)?"0".($mon+1):($mon+1);
$year+=1900;
my $now="$year$mon$day";
return $now;
}
#删除指定目录
sub DeleteDir
{
my $Dir = shift;
if (-e $Dir and -d $Dir)
{
&LogMsg("remove $Dir");
eval {`rd $Dir /s/q`};
if($@)
{
&LogMsg( "remove path [$Dir] failed:n$@ ");
return -1;
}
}
else
{
&LogMsg("The Directory $Dir is not exists");
}
return 0;
}
#删除SaveCHRDataLimit天前的$TargetFileDir的子目录
sub DeleteHistoryFtpCHRFiles()
{
my @AllCHRFtpSubDirs = <$TargetFileDir*>;
my $ASubDir;
for $ASubDir (@AllCHRFtpSubDirs)
{
if (-e $ASubDir and -d $ASubDir)
{
my $DirBasename = basename $ASubDir;
if ($DirBasename le $DeleteHistoryFtpDataDay)
{
&DeleteDir($ASubDir);
}
}
}
}
#主控制流程
INITWork();
&LogMsg("Begin Work!");
my $ScanNum = 0;
while(1)
{
$ScanNum++;
&MoveCHRDFiles();
if ($ScanNum>=$DeleteHistoryCHRPeriod)
{
&DeleteHistoryFtpCHRFiles();
$ScanNum = 0;
}
sleep($ScanPeriod);
}
2. 目录结构如下:
bat脚步内容如下: %~d0 cd %~p0 .Perlbinperl.exe "ManageCHRFtp.pl" (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |

