删除包含项目的目录

Joa*_*loo 2 c# directory cmd

我试图使用C#删除目录.我试过的第一种方法是

Directory.Delete(@"C:\Program Files (x86)\Qmuzki32");
Run Code Online (Sandbox Code Playgroud)

我得到一个异常,说明该目录不为空.然后我找到了一个cmd命令,我可以用它来安静地删除目录,而不管目录是否为空.我在cmd中运行以下命令:

rmdir /s /q "C:/Program Files (x86)/Qmuzik32"
Run Code Online (Sandbox Code Playgroud)

这工作并完全按照我的意愿行事.在我的第一次尝试中,我尝试将此命令构建到C#进程中,如下所示:

if (Directory.Exists(@"C:\Program Files (x86)\Qmuzik32"))
   {
       string sQM32Folder = @"C:\Program Files (x86)\Qmuzik32";
       Process del = new Process();
       del.StartInfo.FileName = "cmd.exe";
       del.StartInfo.Arguments = string.Format("rmdir /s /q \"{0}\"", sQM32Folder);
       del.WaitForExit();
   }
Run Code Online (Sandbox Code Playgroud)

这不起作用然后我尝试这样:

if (Directory.Exists(@"C:\Program Files (x86)\Qmuzik32"))
   {
       string sQM32Folder = @"C:\Program Files (x86)\Qmuzik32";
       Process del = new Process();
       del.StartInfo.FileName = "rmdir.exe";
       del.StartInfo.Arguments = string.Format("/s /q \"{0}\"", sQM32Folder);
       del.WaitForExit();
   }
Run Code Online (Sandbox Code Playgroud)

同样的问题.我得到了例外:

No process is associated with this object.
Run Code Online (Sandbox Code Playgroud)

我没办法.我确实认为我在正确的轨道上.也许上面的代码只需要一些调整.任何帮助表示赞赏.

谢谢J

Joe*_*oey 8

只需使用Directory.Delete(string,bool).

虽然低级文件系统API当然要求你先确保目录是空的,但任何抽象它们的半框架都允许你做一个递归删除.事实上,在尝试使用外部程序之前,这种方法的存在将是我检查的第一件事.


Bal*_*i C 5

如果要使用cmd方式,可以使用:

ProcessStartInfo Info = new ProcessStartInfo(); 
Info.Arguments = "/C rd /s /q \"C:\\Program Files (x86)\\Qmuzik32\""; 
Info.WindowStyle = ProcessWindowStyle.Hidden; 
Info.CreateNoWindow = true; 
Info.FileName = "cmd.exe"; 
Process.Start(Info);
Run Code Online (Sandbox Code Playgroud)