我试图使用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
只需使用Directory.Delete(string,bool).
虽然低级文件系统API当然要求你先确保目录是空的,但任何抽象它们的半框架都允许你做一个递归删除.事实上,在尝试使用外部程序之前,这种方法的存在将是我检查的第一件事.
如果要使用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)