分享

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

 littlestone 2012-08-10

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

分类: C# 362人阅读评论(0)收藏举报

[c-sharp:nogutter] view plaincopyprint?
  1. using System;
  2. using System.IO;
  3. using System.Text.RegularExpressions;
  4. class App
  5. {
  6. static void Main()
  7. {
  8. Console.WriteLine("##########################【程序使用说明】############################");
  9. Console.WriteLine("--目 的:本程序用来删除指定文件夹下包含指定字段的文件用--------------");
  10. Console.WriteLine("--第一步:选择要进行处理的文件夹路径(提示:通过左上角进行粘贴)---------");
  11. Console.WriteLine("--第二步:确认是否包含子文件夹文件------------------------------------");
  12. Console.WriteLine("--第三步:输入要文件名匹配的字符串(如果匹配,则该文件将会被删除)-------");
  13. Console.WriteLine("--第四步:确认执行删除操作,下面开始运行程序---------------------------");
  14. Console.WriteLine("######################################################################");
  15. Console.WriteLine("请输入目录名称:");
  16. string strDirectoryName=Console.ReadLine();
  17. DirectoryInfo myDI=new DirectoryInfo(strDirectoryName);
  18. //删除文件名包含指定字段的文件前
  19. Console.WriteLine("是否包含子目录?YES | NO :");
  20. string containChildren=Console.ReadLine().Trim();
  21. Console.WriteLine("请输入匹配正则:");
  22. string regStr=Console.ReadLine();
  23. switch(containChildren.ToLower())
  24. {
  25. case "yes":
  26. Console.WriteLine("删除文件名包含指定字段的文件前文件清单:");
  27. using (StreamWriter w = File.AppendText("log.txt"))
  28. {
  29. Log ("【删除前】文件名包含指定字段的文件清单:", w);
  30. }
  31. ShowDirectoryFilesAllLevel(myDI);
  32. Console.WriteLine("确认要删除吗?YES | NO :");
  33. if(Console.ReadLine().ToLower()=="yes")
  34. {
  35. Console.WriteLine("删除文件名与"+regStr+"匹配的文件...");
  36. using (StreamWriter w = File.AppendText("log.txt"))
  37. {
  38. Log ("【删除】文件名与"+regStr+"匹配的文件:", w);
  39. }
  40. DeleteFilesAllLevel(myDI,regStr);
  41. //删除文件名包含指定字段的文件后
  42. Console.WriteLine("删除文件名包含指定字段的文件后文件清单:");
  43. using (StreamWriter w = File.AppendText("log.txt"))
  44. {
  45. Log ("【删除后】文件夹下文件清单:", w);
  46. }
  47. ShowDirectoryFilesAllLevel(myDI);
  48. Console.WriteLine("执行完毕!按任意键继续...");
  49. Console.Read();
  50. using (StreamWriter w = File.AppendText("log.txt"))
  51. {
  52. Log ("【执行完毕!】", w);
  53. }
  54. break;
  55. }
  56. else
  57. {
  58. break;
  59. }
  60. case "no":
  61. Console.WriteLine("删除文件名包含指定字段的文件前文件清单:");
  62. ShowDirectoryFilesOneLevel(myDI);
  63. Console.WriteLine("确认要删除吗?YES | NO :");
  64. if(Console.ReadLine().ToLower()=="yes")
  65. {
  66. Console.WriteLine("删除文件名与"+regStr+"匹配的文件...");
  67. using (StreamWriter w = File.AppendText("log.txt"))
  68. {
  69. Log ("【删除前】文件名包含指定字段的文件清单:", w);
  70. }
  71. DeleteFilesOneLevel(myDI,regStr);
  72. //删除文件名包含指定字段的文件后
  73. Console.WriteLine("删除文件名包含指定字段的文件后文件清单:");
  74. using (StreamWriter w = File.AppendText("log.txt"))
  75. {
  76. Log ("【删除后】文件夹下文件清单:", w);
  77. }
  78. ShowDirectoryFilesOneLevel(myDI);
  79. using (StreamWriter w = File.AppendText("log.txt"))
  80. {
  81. Log ("【执行完毕!】", w);
  82. }
  83. break;
  84. }
  85. else
  86. {
  87. break;
  88. }
  89. default:
  90. Console.WriteLine("输入不正确,请输入单词:yes或No!");
  91. break;
  92. }
  93. }
  94. //获取当前文件夹路径下文件
  95. private static void DeleteFilesOneLevel(DirectoryInfo dir,string regStr)
  96. {
  97. FileInfo[] myFileInfo=dir.GetFiles();
  98. foreach(FileInfo file in myFileInfo)
  99. {
  100. Regex regex1=new Regex(regStr);
  101. bool b=regex1.IsMatch(file.Name);
  102. if(b)
  103. {
  104. File.Delete(file.FullName);
  105. using (StreamWriter w = File.AppendText("log.txt"))
  106. {
  107. Log (" 删除文件:"+file.Name, w);
  108. }
  109. }
  110. }
  111. }
  112. private static void ShowDirectoryFilesOneLevel(DirectoryInfo dir)
  113. {
  114. FileInfo[] myFileInfo=dir.GetFiles();
  115. if(myFileInfo.Length==0)
  116. {
  117. Console.WriteLine("当前目录下没有文件!");
  118. using (StreamWriter w = File.AppendText("log.txt"))
  119. {
  120. Log (" 当前目录下没有文件!", w);
  121. }
  122. }
  123. else
  124. {
  125. foreach(FileInfo file in myFileInfo)
  126. {
  127. Console.WriteLine(" "+file.Name);
  128. using (StreamWriter w = File.AppendText("log.txt"))
  129. {
  130. Log (" 文件名称:"+file.Name, w);
  131. }
  132. }
  133. }
  134. }
  135. //递归获取文件夹下文件
  136. private static void DeleteFilesAllLevel(DirectoryInfo dir,string regStr)
  137. {
  138. DirectoryInfo[] myDirectoryInfo = dir.GetDirectories();//获取子目录的名称
  139. FileInfo[] myFileInfo = dir.GetFiles();//获取文件
  140. if(myFileInfo.Length==0)
  141. {
  142. Console.WriteLine("当前目录下没有文件!");
  143. using (StreamWriter w = File.AppendText("log.txt"))
  144. {
  145. Log (" 当前目录下没有文件!", w);
  146. }
  147. }
  148. else
  149. {
  150. foreach(FileInfo file in myFileInfo)
  151. {
  152. Regex regex1=new Regex(regStr);
  153. bool b=regex1.IsMatch(file.Name);
  154. if(b)
  155. {
  156. File.Delete(file.FullName);
  157. using (StreamWriter w = File.AppendText("log.txt"))
  158. {
  159. Log (" 删除文件:"+file.Name, w);
  160. }
  161. }
  162. }
  163. }
  164. foreach(DirectoryInfo DirInfo in myDirectoryInfo)
  165. {
  166. Console.WriteLine("文件夹:"+DirInfo.Name);
  167. using (StreamWriter w = File.AppendText("log.txt"))
  168. {
  169. Log ("文件目录:"+DirInfo.FullName, w);
  170. }
  171. DeleteFilesAllLevel(DirInfo,regStr);
  172. }
  173. }
  174. private static void ShowDirectoryFilesAllLevel(DirectoryInfo dir)
  175. {
  176. DirectoryInfo[] myDirectoryInfo = dir.GetDirectories();//获取子目录的名称
  177. FileInfo[] myFileInfo = dir.GetFiles();//获取文件
  178. foreach(FileInfo file in myFileInfo)
  179. {
  180. Console.WriteLine(" "+file.Name);
  181. using (StreamWriter w = File.AppendText("log.txt"))
  182. {
  183. Log (" 文件名称:"+file.Name, w);
  184. }
  185. }
  186. foreach(DirectoryInfo DirInfo in myDirectoryInfo)
  187. {
  188. Console.WriteLine("文件夹:"+DirInfo.Name);
  189. using (StreamWriter w = File.AppendText("log.txt"))
  190. {
  191. Log ("文件目录:"+DirInfo.FullName, w);
  192. }
  193. ShowDirectoryFilesAllLevel(DirInfo);
  194. }
  195. }
  196. public static void Log (String logMessage, TextWriter w)
  197. {
  198. w.WriteLine("{0} {1}", DateTime.Now.ToString(), logMessage);
  199. }
  200. }

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多