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" (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |