我正在尝试使用C#删除目录。我试过的第一种方法是
Directory.Delete(@"C:\Program Files (x86)\Qmuzki32");
我得到一个异常,说明该目录不为空。然后我找到了一个cmd命令,我可以用它来安静地删除目录,而不管目录是否为空。我在cmd中运行了以下命令:
rmdir /s /q "C:/Program Files (x86)/Qmuzik32"
这工作并完全按照我的意愿行事。在我的第一次尝试中,我尝试将此命令构建到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();
}
这没用,然后我就这样试了:
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();
}
同样的问题。我得到了例外:
No process is associated with this object.
我在我的智慧结束。我确实认为我在正确的轨道上。也许上面的代码只需要一些调整。任何帮助表示赞赏。
由于 Ĵ
答案 0 :(得分:8)
只需使用Directory.Delete(string, bool)。
虽然低级文件系统API当然要求你先确保目录是空的,但任何抽象它们的半框架都允许你做一个递归删除。事实上,这种方法的存在将是我在尝试使用外部程序之前检查的第一件事。
答案 1 :(得分: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);
答案 2 :(得分:4)
del.Start();
del.WaitForExit();
你没有启动这个过程所以它没有PID所以它会死掉