批量删除文件夹下包含指定字段的文件

using System;
using System.IO;
using System.Text.RegularExpressions;

class App
{
static void Main()
{
Console.WriteLine("##########################【程序使用说明】############################");
Console.WriteLine("--目 的:本程序用来删除指定文件夹下包含指定字段的文件用--------------");
Console.WriteLine("--第一步:选择要进行处理的文件夹路径(提示:通过左上角进行粘贴)---------");
Console.WriteLine("--第二步:确认是否包含子文件夹文件------------------------------------");
Console.WriteLine("--第三步:输入要文件名匹配的字符串(如果匹配,则该文件将会被删除)-------");
Console.WriteLine("--第四步:确认执行删除操作,下面开始运行程序---------------------------");
Console.WriteLine("######################################################################");
Console.WriteLine("请输入目录名称:");
string strDirectoryName=Console.ReadLine();
DirectoryInfo myDI=new DirectoryInfo(strDirectoryName);

//删除文件名包含指定字段的文件前
Console.WriteLine("是否包含子目录?YES | NO :");
string containChildren=Console.ReadLine().Trim();
Console.WriteLine("请输入匹配正则:");
string regStr=Console.ReadLine();
switch(containChildren.ToLower())
{
case "yes":
Console.WriteLine("删除文件名包含指定字段的文件前文件清单:");
using (StreamWriter w = File.AppendText("log.txt"))
{
Log ("【删除前】文件名包含指定字段的文件清单:", w);
}
ShowDirectoryFilesAllLevel(myDI);
Console.WriteLine("确认要删除吗?YES | NO :");
if(Console.ReadLine().ToLower()=="yes")
{
Console.WriteLine("删除文件名与"+regStr+"匹配的文件...");
using (StreamWriter w = File.AppendText("log.txt"))
{
Log ("【删除】文件名与"+regStr+"匹配的文件:", w);
}
DeleteFilesAllLevel(myDI,regStr);
//删除文件名包含指定字段的文件后
Console.WriteLine("删除文件名包含指定字段的文件后文件清单:");
using (StreamWriter w = File.AppendText("log.txt"))
{
Log ("【删除后】文件夹下文件清单:", w);
}
ShowDirectoryFilesAllLevel(myDI);
Console.WriteLine("执行完毕!按任意键继续...");
Console.Read();
using (StreamWriter w = File.AppendText("log.txt"))
{
Log ("【执行完毕!】", w);
}
break;
}
else
{
break;
}
case "no":
Console.WriteLine("删除文件名包含指定字段的文件前文件清单:");
ShowDirectoryFilesOneLevel(myDI);
Console.WriteLine("确认要删除吗?YES | NO :");
if(Console.ReadLine().ToLower()=="yes")
{
Console.WriteLine("删除文件名与"+regStr+"匹配的文件...");
using (StreamWriter w = File.AppendText("log.txt"))
{
Log ("【删除前】文件名包含指定字段的文件清单:", w);
}
DeleteFilesOneLevel(myDI,regStr);
//删除文件名包含指定字段的文件后
Console.WriteLine("删除文件名包含指定字段的文件后文件清单:");
using (StreamWriter w = File.AppendText("log.txt"))
{
Log ("【删除后】文件夹下文件清单:", w);
}
ShowDirectoryFilesOneLevel(myDI);
using (StreamWriter w = File.AppendText("log.txt"))
{
Log ("【执行完毕!】", w);
}
break;
}
else
{
break;
}

default:
Console.WriteLine("输入不正确,请输入单词:yes或No!");
break;
}
}

//获取当前文件夹路径下文件
private static void DeleteFilesOneLevel(DirectoryInfo dir,string regStr)
{
FileInfo[] myFileInfo=dir.GetFiles();
foreach(FileInfo file in myFileInfo)
{
Regex regex1=new Regex(regStr);
bool b=regex1.IsMatch(file.Name);
if(b)
{
File.Delete(file.FullName);
using (StreamWriter w = File.AppendText("log.txt"))
{
Log (" 删除文件:"+file.Name, w);
}
}
}
}
private static void ShowDirectoryFilesOneLevel(DirectoryInfo dir)
{
FileInfo[] myFileInfo=dir.GetFiles();
if(myFileInfo.Length==0)
{
Console.WriteLine("当前目录下没有文件!");
using (StreamWriter w = File.AppendText("log.txt"))
{
Log (" 当前目录下没有文件!", w);
}
}
else
{
foreach(FileInfo file in myFileInfo)
{
Console.WriteLine(" "+file.Name);
using (StreamWriter w = File.AppendText("log.txt"))
{
Log (" 文件名称:"+file.Name, w);
}
}
}
}

//递归获取文件夹下文件
private static void DeleteFilesAllLevel(DirectoryInfo dir,string regStr)
{
DirectoryInfo[] myDirectoryInfo = dir.GetDirectories();//获取子目录的名称
FileInfo[] myFileInfo = dir.GetFiles();//获取文件
if(myFileInfo.Length==0)
{
Console.WriteLine("当前目录下没有文件!");
using (StreamWriter w = File.AppendText("log.txt"))
{
Log (" 当前目录下没有文件!", w);
}
}
else
{
foreach(FileInfo file in myFileInfo)
{
Regex regex1=new Regex(regStr);
bool b=regex1.IsMatch(file.Name);
if(b)
{
File.Delete(file.FullName);
using (StreamWriter w = File.AppendText("log.txt"))
{
Log (" 删除文件:"+file.Name, w);
}
}
}
}
foreach(DirectoryInfo DirInfo in myDirectoryInfo)
{
Console.WriteLine("文件夹:"+DirInfo.Name);
using (StreamWriter w = File.AppendText("log.txt"))
{
Log ("文件目录:"+DirInfo.FullName, w);
}
DeleteFilesAllLevel(DirInfo,regStr);
}
}
private static void ShowDirectoryFilesAllLevel(DirectoryInfo dir)
{
DirectoryInfo[] myDirectoryInfo = dir.GetDirectories();//获取子目录的名称
FileInfo[] myFileInfo = dir.GetFiles();//获取文件
foreach(FileInfo file in myFileInfo)
{
Console.WriteLine(" "+file.Name);
using (StreamWriter w = File.AppendText("log.txt"))
{
Log (" 文件名称:"+file.Name, w);
}
}
foreach(DirectoryInfo DirInfo in myDirectoryInfo)
{
Console.WriteLine("文件夹:"+DirInfo.Name);
using (StreamWriter w = File.AppendText("log.txt"))
{
Log ("文件目录:"+DirInfo.FullName, w);
}
ShowDirectoryFilesAllLevel(DirInfo);
}
}
public static void Log (String logMessage, TextWriter w)
{
w.WriteLine("{0} {1}", DateTime.Now.ToString(), logMessage);
}
}

时间: 2024-08-22 14:06:38

批量删除文件夹下包含指定字段的文件的相关文章

代码分析-Java中如何判断文件夹下当天有没有放文件?

问题描述 Java中如何判断文件夹下当天有没有放文件? List files = ftpUtil.getFileList(this.ftpTaskFolder);//ftp任务目录上获取任务文件 // 获取机构号全量数据传输任务文件 String organcodeFileName = """"; for (int i = 0; files != null && i < files.size(); i++) { String tempFileN

log4j:在某个文件夹下输出多个日志文件

问题描述 log4j:在某个文件夹下输出多个日志文件 开户的过程中,想让每个手机号对应一个日志文件,都放在同一个目录下. 日志文件的名字以手机号来命名.使用log4j,应该怎么做呢? 急求急求,大家帮帮忙...... 解决方案 log4j输出多个自定义日志文件Log4j输出日志到文件[配置]log4j异步文件日志输出配置 解决方案二: 创建日志得时候用手机号命名呗

qtp-安装QTP后在Program file文件夹下找不到HP文件夹

问题描述 安装QTP后在Program file文件夹下找不到HP文件夹 在W7环境下安装了QTP11,默认安装路径为C:Program files/HP但是安装完之后找不到路径所指示的文件夹,怎么办? 解决方案 windows 7 64bit么?如果是64bit,在C:Program Files (x86)看看 解决方案二: 可以参考卸载后,换一个简单的目录安装试试,不要安装在 Program files 下

java服务器-tomcat服务器下的webapps文件夹下一定是放.class文件的吗

问题描述 tomcat服务器下的webapps文件夹下一定是放.class文件的吗 tomcat服务器下的webapps文件夹下一定是放.class文件的吗 如果是的话 windows平台下cmd命令行是javac 进行编译,然后复制到webapps文件夹下,ecplise又如何部署呢 解决方案 虽然也可以全部拷过去,但是java文件既没有用,而且大多数人也不愿意分享自己的源代码--而且生产环境的服务器万一被黑客获取,拿走你的程序,我想谁也不愿意吧.

在.net项目中,有的文件夹下有.cs文件,有的文件夹下的页面只有.aspx文件,没有.cs文件,这是怎么回事?

问题描述 在.net项目中,有的文件夹下有.cs文件,有的文件夹下的页面只有.aspx文件,没有.cs文件,这是怎么回事? 解决方案 解决方案二:没有要求,aspx必须配备cs文件,所以这很正常解决方案三:发布之后,所有的.cs文件都编译到dll中了,就只剩.aspx了,你可以在项目上右键发布看看解决方案四:.aspx是页面文件用来展现网页界面的,.aspx.cs是代码文件,用来编程实现功能逻辑的..这两个文件是绑定到一起的,后者是前者的脚本另外还有单独的.cs文件,,,那个也是用来写代码实现功

将E盘下的180文件夹下的所有最深层文件放到E盘下的car文件加下,并且要求重命名文件,并且判断最里层文件同目录下是否有多个文件,并且判断文件夹是否为空

package com.cheyoushuor.enamefile; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; public

SCR文件夹下的多个JAVA文件都是什么关系?

问题描述 鄙人是新手,使用JDK+WTK+ECLIPSE,ECLIPSE工作目录中每个工程的SCR文件夹中都有多个JAVA文件,请问这些JAVA文件之间是如何整合起来的?相互之间是否可以引用?初学者,有些问题可能很没营养,让各位见笑了,还望不吝赐教. 解决方案 解决方案二:我也是初学者,不懂啊?解决方案三:补充一个问题,如果这些文件之间可以互相引用,具体采用的是什么方式?解决方案四:很多东西都是默认引入了的就像C语言可以只写voidmain(){printf();}SRC下很多都是JAVA自带的

php遍历一个文件夹下的所有目录及文件

在面试中我们经常遇到这个题目:php遍历一个文件夹下的所有文件和子文件夹. 这个题目有好多种解决方法.但大致思路都一样.采用递归. $path = './filepath';   function getfiles($path)   {       if(!is_dir($path)) return;      $handle  = opendir($path);      while( false !== ($file = readdir($handle)))      {          

从指定文件夹里COPY指定的一批文件列表(TXT文件)

现实总是层出不穷的,像分形几何一样,一颗树永远在不断的相似变化 .... 现在的问题不是COPY,而是测试将一个包含近25万个文件的目录里COPY出上千个文件,放在另一个目录下作测试. 看看是不是因为单个目录文件太多的缘故,而导致的文件读取速度怪异.. ~~~~ 还好,网上有近似文档.: http://www.cnblogs.com/looky/archive/2010/01/24/1767089.html 同事提供TXT文件列表FILE.TXT. 作一个BAT: echo Please mak