删除最近几天的LOG记录文件

// Delete Expire Log Files
BOOL DeleteExpireFiles(LPCTSTR lpszFileExt, SYSTEMTIME* pSystemTime, int nReservedDays)
{
	BOOL bRet = FALSE;

	do
	{
		ASSERT(NULL != lpszFileExt);
		ASSERT(NULL != pSystemTime);

		if (nReservedDays <= 0) { break; }

		TCHAR szDir[MAX_PATH] = { 0 };
		GetModuleFileName(NULL, szDir, _countof(szDir) - 1);
		ASSERT(_tcslen(szDir) > 0);
		_tcsrchr(szDir, TEXT('\\'))[0] = TEXT('\0');

		TCHAR szLog[MAX_PATH] = { 0 };
		StringCchPrintf(szLog, _countof(szLog), TEXT("%s\\*%s"), szDir, lpszFileExt);

		WIN32_FIND_DATA fd = { 0 };

		HANDLE hFind = FindFirstFile(szLog, &fd);

		if (INVALID_HANDLE_VALUE == hFind) { break; }

		CTime current(*pSystemTime);

		while (TRUE)
		{
			if (!(FILE_ATTRIBUTE_DIRECTORY & fd.dwFileAttributes))
			{
				CTime time = CTime(fd.ftCreationTime);
				CTimeSpan span(nReservedDays, 0, 0, 0);

				if ((current - time) > span)
				{
					TCHAR szFile[MAX_PATH] = { 0 };
					StringCchPrintf(szFile, _countof(szFile), TEXT("%s\\%s"), szDir, fd.cFileName);

					DeleteFile(szFile);
				}
			}

			if (!FindNextFile(hFind, &fd)) { break; }
		}

		if (INVALID_HANDLE_VALUE != hFind) { FindClose(hFind); hFind = INVALID_HANDLE_VALUE; }

		// Completed
		bRet = TRUE;
	} while (0);

	return bRet;
}

// 调用方式 : e.g 保留最近三天的log记录,删除之前的log记录
SYSTEMTIME st = { 0 };
GetSystemTime(&st);
DeleteExpireFiles(TEXT(".log"), &st, 3);

 

上一篇: 获取EXE文件版本信息(版本格式:xx.xx.xx.xx)
下一篇: 监控Windows系统音量变化通知
Eleven
博客等级 码龄19年 4918粉丝 75原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值