Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 正在删除包含项目的目录_C#_Directory_Cmd - Fatal编程技术网

C# 正在删除包含项目的目录

C# 正在删除包含项目的目录,c#,directory,cmd,C#,Directory,Cmd,我正在尝试使用C#删除目录。我尝试的第一种方法是 Directory.Delete(@"C:\Program Files (x86)\Qmuzki32"); 我得到一个异常,说明目录不是空的。然后我找到了一个cmd命令,我可以使用它安静地删除目录,而不管目录是否为空。我在cmd中运行了以下命令: rmdir /s /q "C:/Program Files (x86)/Qmuzik32" 这确实起到了作用,并且做了我想要它做的事情。第一次尝试时,我尝试将此命令构建到C#进程中,如下所示: if

我正在尝试使用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.
我确实认为我在正确的轨道上;也许上面的代码需要一些调整。

只需使用即可

虽然低级文件系统API当然要求您首先确保目录是空的,但是任何抽象目录的框架都允许您进行递归删除。事实上,在尝试使用外部程序之前,我会首先检查这种方法的存在性


您没有启动进程,因此它没有PID,因此它会死掉

如果您想使用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);

我认为本地人不应该用C##来形容头衔)是的,他们不应该,快速输入:)这个方法肯定有效。我尝试过的任何其他方法在某个时候都失败了,并给了我一个System.IO错误。@Joey这仍然不是真正的答案,因为rmdir不是一个可执行文件,而是cmd中的一个命令,所以:/n这是他们第一次尝试的方法(由于同样的原因失败)。所以我仍然认为你的答案是相关的。当然,除了不应该以这种方式递归删除目录;-)
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);