C#删除247个不同子文件夹中的内容

时间:2013-09-16 10:10:03

标签: c# batch-file

我想删除子文件夹中的所有内容。

C:\ Folder - >根目录

A,B,C,D,.... - >子文件夹(信息:有247个子文件夹)

我不知道如何实现它,例如在c#或批处理文件中。

我很感激任何帮助。

5 个答案:

答案 0 :(得分:5)

如果第二个参数为true(递归),则所有子文件夹都会被删除!

Directory.Delete("yourpath", true);

如果要删除目录的内容,可以执行以下操作:

Directory.EnumerateFiles("yourpath", "*", SearchOption.AllDirectories).ToList().ForEach(f => File.Delete(f));

答案 1 :(得分:4)

批量生产(也)很容易:

rmdir /S "C:\Folder"

答案 2 :(得分:1)

在c#

foreach(var file in Directory.EnumerateFiles(sourceDirectory, 
                   "*", SearchOption.AllDirectories))
{
    File.Delete(file);
}

try
{
Directory.GetFiles(sourceDirectory, "*", SearchOption.AllDirectories)
     .ToList().ForEach(File.Delete);
}
catch(UnauthorizedAccessException uae)
{
}

注意:如果您没有获得sourceDirectory的权限,那么这不会起作用(尝试catch会阻止两种情况下的应用程序错误)

答案 3 :(得分:0)

在c#中你可以用:

foreach(string directory in Directory.GetDirectories(@"C:\Folder"))
   Directory.Delete(directory, true);

您还可以将搜索模式传递​​给Directory.GetDirectories(...)

答案 4 :(得分:0)

如果您需要删除根文件夹中的所有内容(所有子文件夹及其中的所有文件,以及根文件夹本身中的文件),则需要Direcotry.Delete('path', true)private void DeleteJustFilesFromFolder(string roootPath) { DirectoryInfo d = new DirectoryInfo(roootPath); //delete files from root foreach (FileInfo fi in d.GetFiles()) { fi.Delete(); } //get root subfolders foreach (DirectoryInfo di in d.GetDirectories()) { DeleteJustFilesFromFolder(di.FullName); //kept commented, but if you prefer then can delete subfolder by this line //di.Delete(); } }

但是如果您需要保留子文件夹(A,B,C,D),同时仍然删除其中的所有文件,那么就没有Direct / BuiltIn方法来做到这一点, 一般情况下,您需要首先获取根文件夹中的所有文件夹,然后循环遍历它们,然后删除其中的所有文件,将子文件夹留空。

像这个方法(调用传递根路径的方法):

{{1}}