
15.11.2009, 04:34
|
|
Участник форума
Регистрация: 20.12.2008
Сообщений: 130
Провел на форуме: 436500
Репутация:
11
|
|
Сообщение от draliokero
Помогите с кодом, нужно пробежаться с указанного начального каталога по его подкаталогам, удаляя из них файлы с расширениями *.@@@,*.bla, *.sdx.
В коде куча лишнего хлама, ибо вырезано кое-как из совсем другого проекта  удачи!
Код:
#include <stdio.h>
#include <windows.h>
HANDLE ch;
DWORD WriteToConsole(LPSTR text)
{
DWORD nChars;
char buf[MAX_PATH];
strcpy(buf,text);
strcat(buf,"\r\n");
char buf2[MAX_PATH];
CharToOem(buf,buf2);
WriteConsole(ch,buf2,strlen(buf2),&nChars,0);
return nChars;
}
void FindAndDelete(LPSTR path, LPSTR name )
{
WIN32_FIND_DATA wfd;
HANDLE fh;
char lol[MAX_PATH];
strcpy(lol,path);
strcat(lol,"*");
fh = FindFirstFile(lol,&wfd);
if(fh == INVALID_HANDLE_VALUE) return;
do
{
if (strstr(wfd.cFileName,name) != NULL)
{
char delfilebuf[MAX_PATH];
strcpy(delfilebuf,path);
strcat(delfilebuf,wfd.cFileName);
WriteToConsole(delfilebuf);
//Удаляем файл
DeleteFile(delfilebuf);
}
if ((!strcmp(wfd.cFileName,".")) || (!strcmp(wfd.cFileName,".."))) continue;
if (wfd.dwFileAttributes ==FILE_ATTRIBUTE_DIRECTORY)
{
char pathbuf[MAX_PATH];
strcpy(pathbuf,path);
if (pathbuf[strlen(pathbuf)-1] != '\\') strcat(pathbuf,"\\");
strcat(pathbuf,wfd.cFileName);
if (pathbuf[strlen(pathbuf)-1] != '\\') strcat(pathbuf,"\\");
FindAndDelete(pathbuf,name);
}
} while (FindNextFile(fh,&wfd));
FindClose(fh);
return;
}
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
AllocConsole();
ch = GetStdHandle(STD_OUTPUT_HANDLE);
//Запускаем рекурсивную функцию
//Её параметры: путь к стартовой папке и
// расширение удаляемых файлов (с точкой!)
// удаляет файлы с заданным расширением в
//стартовой папке, её подпапках, и их подпапках, и их
//подпапках))))) etc
FindAndDelete("D:\\tst\\",".\@\@\@");
FindAndDelete("D:\\tst\\",".bla");
FindAndDelete("D:\\tst\\",".sdx");
system("pause");
return 0;
}
|
|
|