下面引用由chinanic在 2006/04/06 00:27am 发表的内容:
楼主的编程功夫不错。呃,咋看有点面生。。。原来是才来不久的。。
小生有礼了。。
厚着脸皮向楼主讨教,怎么监控固定路径下的文件类型,如果不是指定的文件类型,则删除! 这个问题并不难,就像杀毒软件在杀毒一样,首先对指定目录中的所有文件进行遍历,找到一个文件就判断其扩展名是否合乎要求(本例判断是否是“.txt”),如果找到的不是文件而是子目录,则调用自己继续查找。
这里给出子函数,在主程序调用它,传递给一个需要判断的路径,也就是你所说的固定路径,就可以了。如果需要监控,用定时器写或者加到循环里面就可以了。正如你所在的版块有人发此贴 http://www.thysea.com/lb/cgi-bin/topic.cgi?forum=18&topic=8914&replynum=last#bottom 求助,完全可以编写一个小程序加载到内存中发现auturun.inf就删除它,虽然可以实现,不过这好像不是良策,建议还是重装系统吧!
void DeleteDirectory(char *DirName)
{
CFileFind tempFind;
char tempFileFind[MAX_PATH];
sprintf(tempFileFind,"%s\\*.*",DirName);
BOOL IsFinded=(BOOL)tempFind.FindFile(tempFileFind);
while(IsFinded)
{
IsFinded=(BOOL)tempFind.FindNextFile();
if(!tempFind.IsDots())
{
char foundFileName[MAX_PATH];
strcpy(foundFileName,tempFind.GetFileName().GetBuffer(MAX_PATH));
if(tempFind.IsDirectory())//判断是文件还是文件夹?
{
char tempDir[MAX_PATH];
sprintf(tempDir,"%s\\%s",DirName,foundFileName);
DeleteDirectory(tempDir);//如果是文件夹,则递归调用自己,继续搜索子目录。
}
else
{
char m,tempFileName[MAX_PATH];
sprintf(tempFileName,"%s\\%s",DirName,foundFileName);
strrev(tempFileName);
m=tempFileName[4];
tempFileName[4]=';\0';;
if (stricmp(tempFileName,"txt."))
{
//删除不是txt扩展名的所有文件,如果有子目录删将子目录符合条件的也删除!
tempFileName[4]=m;
strrev(tempFileName);
DeleteFile(tempFileName);
}
}
}
}
tempFind.Close();
}
在主程序调用:
DeleteDirectory("C:\\123");
如果你的C盘123目录中存在许多文件,还存在许多子目录,子目录中又存在很多文件甚至还存在子目录,你使用这一句调用,会把“c:\123”中所有.txt为扩展名的文件保留,其余的文件统统删掉!
最后,说一点,俺是新人,在其它论坛做总版主,来此坛转转,发了几篇不成熟的贴子,不小心被人关注而成了本版版主,此坛人气比较不错,看来我要留下来了,不过我对这里了解不多,还请楼上的版主多多引导! |