我想刪除C#應用程序中臨時文件夾中的所有* .tmp文件。使用cmd.exe執行DEL命令的代碼永遠在使用
使用cmd.exe執行DEL命令的代碼是永久性的。它永遠停留在Process.WaitForExit()
,並且Process.HasExited
仍然是錯誤的。但是,如果在cmd中手動使用相同的命令運行良好:
DEL /Q /F "C:\Users\WinUser\AppData\Local\Temp\abc\*.tmp"
代碼:
Process Process = new Process();
Process.StartInfo.FileName = "cmd.exe";
Process.StartInfo.Arguments = " DEL /Q /C /F \"C:\\Users\\WinUser\\AppData\\Local\\Temp\\abc\\*.tmp\"";
Process.StartInfo.CreateNoWindow = true;
Process.StartInfo.UseShellExecute = false;
Process.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
Process.Start();
Process.WaitForExit();
while (!Process.HasExited)
{
MessageBox.Show("Error");
}
**注:我的錯誤是,我用/ C後DEL和正確的命令行是:
Process.StartInfo.Arguments = " cmd /C DEL /Q /F \"C:\\Users\\WinUser\\AppData\\Local\\Temp\\abc\\*.tmp\"";
雖然,我將切換到基於.NET框架的刪除代碼,如下所述。但是我最初選擇了基於命令行(cmd.exe)的操作,因爲Process.WaitForExit()
在執行時沒有掛起程序。我在刪除操作中有1000多個文件要刪除。
你不需要/ c來執行命令嗎? http://ss64.com/nt/cmd.html你甚至使用Run窗口來測試它嗎? –
@ ta-speot-是我用過/ C但是在運行cmd中,它說無效開關。 –
爲什麼不使用'Directory.GetFiles()''foreach他們與'File.Delete()' –