[C语言]删除用户自定义后缀名的所有文件

环境:win7

IDE:DEV-C++

编译器:GCC

编译结果:Success

运行结果:Success

使用说明:

1.输入需要查询的目录,免备案空间,比如e:

2.输入需要删除的后缀名:比如:txt

注意:本程序使用Remove删除文件,香港服务器,香港虚拟主机,所以删除的文件不会进回收站。

程序:

源码:

#include <stdio.h>#include <direct.h> //_getcwd(), _chdir()#include <stdlib.h> //_MAX_PATH, system()#include <io.h>//_finddata_t, _findfirst(), _findnext(), _findclose()#include <string.h> #include <windows.h>//删除总数 int count = 0;//获取当前路径void GetCurrentPath(void){char buf[80];getcwd(buf, sizeof(buf));printf(“current working directory : %s\n”, buf);}//获取后缀名 char *substr(const char*str){char *ptr, c = ‘.’;static char stbuf[256];ptr = strrchr(str, c); //最后一个出现c的位置if(ptr == NULL){return stbuf;}int pos = ptr-str;//用指针相减 求得索引unsigned start = pos + 1;unsigned end = strlen(str);unsigned n = end – start;strncpy(stbuf, str + start, n);stbuf[n] = 0; //字串最后加上0return stbuf; }//递归查询文件并且删除 void findAllFile(char *pFilePath,char *extName){WIN32_FIND_DATA FindFileData;DWORD dwError;HANDLE hFind = INVALID_HANDLE_VALUE;char DirSpec[MAX_PATH+1];strncpy(DirSpec, pFilePath, strlen(pFilePath) + 1);SetCurrentDirectory(pFilePath);strncat(DirSpec, “\\*”, 3);hFind = FindFirstFile(DirSpec, &FindFileData);if (hFind == INVALID_HANDLE_VALUE){printf (“FileName:%s Invalid file handle. Error is %u\n”, pFilePath,GetLastError());return ;}else{if (FindFileData.dwFileAttributes != FILE_ATTRIBUTE_DIRECTORY ){printf(“FileName:%s\n”, FindFileData.cFileName);}else if(FindFileData.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY&& strcmp(FindFileData.cFileName, “.”) != 0&& strcmp(FindFileData.cFileName, “..”) != 0){char Dir[MAX_PATH + 1];strcpy(Dir, pFilePath);strncat(Dir, “\\”, 2);strcat(Dir, FindFileData.cFileName);findAllFile(Dir,extName);}while (FindNextFile(hFind, &FindFileData) != 0){if (FindFileData.dwFileAttributes != FILE_ATTRIBUTE_DIRECTORY){_chdir( pFilePath );char *extname2 = substr(FindFileData.cFileName);if(strcmp(extname2,extName) ==0){printf (“\nFileName:%s “, FindFileData.cFileName);int result = remove(FindFileData.cFileName);if(result == 0){printf(“Delete Result:%d”,result);count++;}else{perror(“remove”);}}}else if(FindFileData.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY && strcmp(FindFileData.cFileName, “.”) != 0&& strcmp(FindFileData.cFileName, “..”) != 0){char Dir[MAX_PATH + 1];strcpy(Dir, pFilePath);strncat(Dir, “\\”, 2);strcat(Dir, FindFileData.cFileName);findAllFile(Dir,extName);}}dwError = GetLastError();FindClose(hFind);if (dwError != ERROR_NO_MORE_FILES) {printf (“FindNextFile error. Error is %u\n”, dwError);return;}} }//开始显示部分 void Show(char str[]){int i,len; len = strlen(str);for(i=0;i<len;i++){printf(“%c”,str[i]);sleep(100); } }int main(void){ printf(“Anleb : “);sleep(1000); char string1[] = “I am Anleb,nice to somthing!\n”;Show(string1); printf(“Anleb : “); sleep(1000); char string2[] = “Go,gay!\n”;Show(string2);printf(“Please Enter the Path:”);char path[128];gets(path);while(strlen(path) == 0){printf(“Warning:The Path value is Null!\n”);printf(“Please Enter the Path:”);gets(path);}if(strcmp(path,”exit”) ==0)return 0;printf(“Please Enter the ExtName:”);char extName[10];gets(extName);while(strlen(extName) == 0){printf(“Warning:The ExtName value is Null!\n”);printf(“Please Enter the ExtName:”);gets(extName);}if(strcmp(extName,”exit”) ==0)return 0;findAllFile(path,extName);printf(“\nDelete Count: %d\n”,count); system(“pause”); return 0;}抱最大的希望,为最大的努力,做最坏的打算

[C语言]删除用户自定义后缀名的所有文件

相关文章:

你感兴趣的文章:

标签云: