[C语言]删除用户自定义后缀名的所有文件
环境:win7
IDE:DEV-C++
编译器:GCC
编译结果:Success
运行结果:Success
使用说明:
1.输入需要查询的目录,比如e:
2.输入需要删除的后缀名:比如:txt
注意:本程序使用Remove删除文件,所以删除的文件不会进回收站。
程序:http://files.cnblogs.com/IAmBetter/DeleteEverything.rar
源码:
- #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; //字串最后加上0
- return 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语言]删除用户自定义后缀名的所有文件的更多相关文章
- -05 08:57 ARCGIS地统计学计算文件后缀名为.shp文件制作
2011-07-05 08:57 ARCGIS地统计学计算文件后缀名为.shp文件制作 ARCAMP软件要进行地统计计算的文件后格式后缀名必须为.shp的文件,网上介绍的方法复杂难懂,那么制作.shp ...
- IO流-递归遍历目录下指定后缀名结尾的文件名称
/* *自定义遍历目录下指定后缀名结尾文件的名称的方法: * * param file:指定目录 name:指定后缀名 */ 1 public static void FileName(File fi ...
- C#中获取指定路径下指定后缀名的所有文件的路径的list
场景 指定一个路径和后缀名,查找这个路径下所有以此后缀名结尾的文件. 注: 博客主页: https://blog.csdn.net/badao_liumang_qizhi关注公众号 霸道的程序猿 获取 ...
- linux下递归删除指定后缀名的文件
以删除当前目录到所有子目录下的后缀名为rej的文件为例: find . -name "*.rej" |xargs rm -f
- linux shell中如何删除指定后缀名的文件?
答: find . -name '*.txt' -delete 这条命令含义如下: 从当前目录开始查找以txt为后缀名的文件并删除掉
- [Java] 03 String获取文件后缀名,判断文件是否合法
package test.string; import java.util.Arrays; import java.util.List; public class GetFileType { priv ...
- Java获取一个路径下指定后缀名的所有文件
方法一: http://blog.csdn.net/zjx102938/article/details/8114114 import java.io.File; import java.util.Ar ...
- linux命令(13) 删除指定文件夹下后缀名相同的文件
方法一: find 目录 -name "*.abc" | xargs rm命令有点危险,可以先执行前半段,看看是不是你要删除的文件, 然后再整条执行 方法二:find . -nam ...
- 删除linux上7天前后缀名.sql的文件
#!/bin/bash#delete the file of 7 days agofind /data/mysqlbackup/ -mtime +7 -name "*.sql" - ...
随机推荐
- linux下解压 tar.bz2
tar xvfj xxx.tar.bz2 转自: http://www.360doc.com/content/12/0907/16/8006573_234845810.shtml
- sublime text 2自定义代码片段
本文引用 http://www.blogjava.net/Hafeyang/archive/2012/08/17/how_to_create_code_snippet_in_subline_tex ...
- jQuery制作简洁的多级联动Select下拉框
今天我们要来分享一款很实用的jQuery插件,它是一个基于jQuery多级联动的省市地区Select下拉框,并且值得一提的是,这款联动下拉框是经过自定义美化过的,外观比浏览器自带的要漂亮许多.另外,这 ...
- JQuery------实现鼠标摁下抬起时div背景色改变
作用:使用自定义一个按钮 代码: <div class = 'btn'>按钮</div> $(".btn").mousedown(function () { ...
- win7下maven的安装
1.在安装maven之前,先确保已经安装JDK1.6及以上版本,并且配置好环境变量.2.上Maven官网(https://maven.apache.org/download.cgi)下载Maven的压 ...
- Spring中bean的作用范围
singleton作用域: Spring的scope的默认值是singleton Spring 只会为每一个bean创建一个实例,并保持bean的引用. <bean id="bean的 ...
- 【BZOJ4872】[Shoi2017]分手是祝愿 数学+期望DP
[BZOJ4872][Shoi2017]分手是祝愿 Description Zeit und Raum trennen dich und mich. 时空将你我分开.B 君在玩一个游戏,这个游戏由 n ...
- ps -aux | egrep 多个值
ps -aux |egrep "(schedule.jar|positec.jar|time_server.jar|tomcat-xweb/)"
- 阿里云服务器Mysql修改密码
核心架构基于阿里云服务器CentOS7.2操作系统,全面支持Java Web运行环境 Tomcat 8.5.8 JDK 8u111 MySQL5.7.16 详细信息,请在服务器执行 more r ...
- Codeforces Round #513-ABCD
ABC现场做出,涨了八十几分吧.D有点思路不知道怎么实现,赛后看题解发现巨简单,想得太复杂了.蓝瘦. A----http://codeforces.com/contest/1060/problem/A ...