// EPServer.cpp : 定义控制台应用程序的入口点。
//
#include <stdio.h>
#include <iostream>
#include "Windows.h"
#include <list>
#include <string>
#include <map>
#include <time.h>
using namespace std;
char deletefilePath[128] = {0};
int deleteTimeDay = 30;
int isEnterFlag = 1;
void FileTimeToTime_t(FILETIME ft, time_t *t)
{
LONGLONG ll;
ULARGE_INTEGER ui;
ui.LowPart = ft.dwLowDateTime;
ui.HighPart = ft.dwHighDateTime;
ll = ft.dwHighDateTime << 32 + ft.dwLowDateTime; //这一步是不是多余的
//将ui.QuadPart的数据类型ULONGLONG强制转换为time_t的LONGLONG数据类型
*t = ((LONGLONG)(ui.QuadPart - 116444736000000000) / 10000000);
}
void DeletePathFile(char *cpPath, long seconds)
{
char szFind[MAX_PATH] = {0};
WIN32_FIND_DATA FindFileData;
strcpy(szFind, cpPath);
strcat(szFind, "\\*");
//char regex[64] = {0};
//sprintf(regex, "^%s$", cpType);
HANDLE hFind = ::FindFirstFile(szFind, &FindFileData);
if(INVALID_HANDLE_VALUE == hFind) return;
do
{
char szFile[256] = {0};
//过滤. .. 隐藏文件
if(FindFileData.cFileName[0] == '.')
{
continue;
}
//目录
if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
strcpy(szFile,cpPath);
strcat(szFile,"\\");
strcat(szFile,FindFileData.cFileName);
DeletePathFile(szFile, seconds);
}
else
{
strcpy(szFile,cpPath);
strcat(szFile,"\\");
strcat(szFile,FindFileData.cFileName);
time_t lNowTime = time((time_t*)NULL);
time_t tFileTime;
// FILETIME ftCreationTime; 创建时间
// FILETIME ftLastAccessTime; 最后一次访问时间
// FILETIME ftLastWriteTime; 最后一次修改时间
FileTimeToTime_t(FindFileData.ftLastWriteTime, &tFileTime);
if((lNowTime - tFileTime) > seconds)
{
printf("删除文件 = %s \n",szFile);
DeleteFile(szFile);
}
}
}while(FindNextFile(hFind, &FindFileData));
FindClose(hFind);
}
void GetConfigInfo()
{
char szValue[256]={0};
char szAppFile[512];
GetCurrentDirectory(512, szAppFile);
sprintf(szAppFile, "%s\\%s", szAppFile,"Config.ini");
GetPrivateProfileString( (LPCTSTR)"DeleteInfo", (LPCTSTR)"DeletePath", (LPCTSTR)"", (LPTSTR)deletefilePath, sizeof(deletefilePath), szAppFile);
deleteTimeDay = GetPrivateProfileInt((LPCTSTR)"DeleteInfo", (LPCTSTR)"deleteTimeDay", 30, szAppFile);
isEnterFlag = GetPrivateProfileInt((LPCTSTR)"DeleteInfo", (LPCTSTR)"isEnterFlag", 1, szAppFile);
}
int main(int argc, CHAR* argv[])
{
//获取配置文件信息
GetConfigInfo();
printf("删除路径为 = %s\n间隔删除时间为%d天 \n",deletefilePath,deleteTimeDay);
if (strlen(deletefilePath) == 0)
{
printf("配置路径为空 \n");
printf("请在配置文件先配置路径 \n");
while(1){
Sleep(150);
}
}
if (isEnterFlag == 1)
{
printf("请按Enter确认开始删除 \n");
char buf[1024];
while(fgets(buf,1024,stdin)!=NULL){
break;
}
}
printf("删除服务开始 \n");
while(1)
{
DeletePathFile(deletefilePath,deleteTimeDay*24*60*60);
Sleep(150);
}
return 0;
}
评论0