加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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"

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读