C# アプリケーションの一時フォルダーにあるすべての *.tmp ファイルを削除したいと考えています。
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");
}
**注: 私の間違いは、DEL の後に /C を使用していたことです。正しいコマンド ラインは次のとおりです。
Process.StartInfo.Arguments = " cmd /C DEL /Q /F \"C:\\Users\\WinUser\\AppData\\Local\\Temp\\abc\\*.tmp\"";
ただし、後述の .NET Framework ベースの削除コードに切り替えます。Process.WaitForExit()
しかし、実行中にプログラムがハングしないため、最初はコマンドライン (cmd.exe) ベースの操作を選択しました。削除操作で削除するファイルが 1000 個以上あります。