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

简介:

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); } }

目录
相关文章
|
5月前
|
机器学习/深度学习 Python
删除指定文件夹重复的文件
这是一个Python脚本,用于删除指定文件夹(包括子目录)中的重复图片文件,基于文件的MD5值。程序依赖`NStudyPy`库,可通过`pip install -U NStudyPy`安装。核心函数`delete_repeat_file`接收路径和是否递归参数,调用未展示的`get_repeat_file`函数获取重复文件并删除。
49 1
|
6月前
讲解:如何根据txt文本列出的文件名批量查找指定文件夹里的文件并复制到新的文件夹里 , 按照文件名批量复制文件 , 根据文件名批量复制 , 通过文件名批量复制文件
该文介绍了一款批量文件处理软件,用于解决三类问题:依据文件名清单批量复制图片、筛选PDF文件及删除指定文件。用户可从百度或腾讯下载链接获取软件。操作步骤包括加载文件夹、输入文件名清单、设置目标位置、选择操作类型(复制、剪切或删除)及匹配方式,然后开始查找。软件能快速处理大量文件,提高办公效率,避免手动操作。查找结果会显示在特定文件夹和日志中,记录每个操作详情。
680 5
|
6月前
如何基于原名称批量重命名(格式化)文件(夹)名
该文介绍了如何使用一个工具批量处理文件名,使其符合“4位数字 - 6位数字 - 10位数字”的格式。首先,提供了两个下载链接(度娘网盘和蓝奏云)以获取该工具,接着详细步骤包括:打开工具,切换到“文件批量复制”模块,使用快捷键;将文件拖入或通过导入按钮添加;选择并编辑重命名规则,分别提取出4位、6位和10位数字;最后,在“纯自定义内容”中输入格式“xxxx - xxxxxx - xxxxxxxxxx”并执行,确认重命名后的文件名正确无误。建议在执行前先保存规则,以防错误难以恢复。
|
6月前
如何批量重命名,把文件(夹)名的内容位置调整(前后移动)
该文介绍了如何使用一个工具批量修改文件名,将"中文[数字]"格式改为"中文 - 数字"。首先,从提供的百度网盘或蓝奏云链接下载工具,使用提取码获取。接着,在工具中选择文件批量复制模块,通过拖放或导入按钮添加文件或文件夹。然后,设置两个规则:一个提取中文(2个字符),另一个提取数字(20个字符)。预览无误后,选择方案3,以自定义内容("规则1 空格-空格 规则2")重命名,并确保关联到之前创建的规则。最后,执行重命名操作,查看结果,文件名应已按预期更改。
|
6月前
如何批量复制多个文件到多个目录中(提取匹配法)
该文介绍了一个工具的使用方法,用于将带有特定数字的文件或文件夹自动归类到相应数字命名的文件夹中。操作步骤包括:下载工具(链接在文中提供)、打开工具选择“文件批量复制”功能、设置匹配规则(如从文件名中提取数字)并预览效果,最后执行复制操作。通过示例展示了如何处理“-数字.png”格式的文件,以及如何过滤掉特定格式的图片。该工具适用于处理大量按规则命名的文件,提高整理效率。
|
6月前
如何批量删除多个不同路径的文件但又保留文件夹呢
本文介绍了使用一个工具批量处理文件夹的步骤。首先,提供了百度网盘和蓝奏云的链接,需要提取码qwu2和2r1z。接着,展示了一个包含两个图片的文件夹示例。然后,打开工具,利用文件批量复制功能,并勾选“复制时先清空…”选项,即使目标文件夹为空。按照提示操作后,即可完成批量处理。最后,展示了操作完成后的结果。
|
6月前
|
Windows
推荐:如何批量根据PDF文件名批量查找PDF文件,复制到指定地方保存,通过文件名批量复制文件,按照文件名批量复制文件,根据文件名批量提取文件
该文介绍了一个批量查找PDF文件(不限于找PDF)的工具,用于在多级文件夹中快速查找并复制特定文件。通过下载提供的软件,用户可以加载PDF库,输入文件名列表,设置操作参数(如保存路径、复制或删除)及搜索模式。软件能高效执行,例如在1.1秒内完成对数千文件中的37个目标文件的复制,显著提升了工作效率,避免了手动逐个查找和复制的繁琐。
616 0
|
6月前
无规律快速批量重命名文件(夹)-固定命名
本文介绍了一个工具的使用方法,用于批量修改文件名。首先在文中提供了两个下载链接:百度网盘(提取码:qwu2)和蓝奏云(提取码:2r1z)。接着,展示了如何通过该工具的“文件批量复制”功能提取文件路径,并在“文章”版块中处理这些路径,提取出目标文件名。然后,在“文字批量替换”版块中,创建规则并保存,用于文件名的重命名。最后,回到“批量复制”版块,选择重命名功能,将目标路径与规则对应,执行重命名操作。整个过程旨在将大量无规律的文件名改为预设的目标文件名。
|
6月前
|
存储 C语言 C++
C++遍历文件夹获取各文件名称并筛选指定格式类型的文件或具有特定名称的文件
C++遍历文件夹获取各文件名称并筛选指定格式类型的文件或具有特定名称的文件
134 1
|
6月前
|
存储 定位技术 Python
批量将文件名称符合要求的文件自动复制到新文件夹:Python实现
批量将文件名称符合要求的文件自动复制到新文件夹:Python实现
106 2