2010-03-29 63 views
1

我想使用System.Diagnostic.Process啓動del命令。基本上我想從C刪除一切:\驅動器有* .BATSystem.Diagnostics.Process - 德爾命令

System.Diagnostics.Process proc = new System.Diagnostics.Process(); 
string args = string.Empty; 
args += "*.bat"; 

proc.StartInfo.FileName = "del"; 
proc.StartInfo.WorkingDirectory = "C:\\"; 
proc.StartInfo.Arguments = args.TrimEnd(); 
proc.Start(); 

但是文件名時,代碼跑拋出一個異常,「該系統找不到指定的文件。」我知道那個根文件夾中的文件肯定包含該文件擴展名。

回答

2

您不需要啓動del命令。您可以從C#中刪除文件。

 var files = new DirectoryInfo("C:\\").GetFiles("*.bat"); 
     foreach (FileInfo fi in files) 
     { 
      fi.Delete(); 
     } 
+0

破解這個作品完美,少了很多代碼! – wonea 2010-03-29 15:24:27

+0

我使用io和其他一些方法,但UAC和用戶配置文件之外的權限有問題。 如果我將清單更改爲以管理員身份執行,那麼它將無法正確檢測當前登錄的用戶是否需要執行任務。 – JoshF 2015-01-22 19:32:35

7

「del」不是可執行文件。這是由命令解釋程序cmd.exe運行的命令。代替運行「del」,運行cmd.exe /c "del foo.txt"

+0

有趣的是,如果我找不到.Net功能,我會記住其他控制檯命令。 – wonea 2010-03-29 15:26:32

+0

對於想要從Process類運行批處理文件的時候,cmd.exe/c也很有用。 – 2010-03-29 15:39:21

0

del是一個控制檯命令,而不是可以通過Process類啓動的應用程序。是否有這樣的原因,而不是在System.IO命名空間中使用託管類?

+0

爲此,我承認,我正在吠叫錯誤的樹。 – wonea 2010-03-29 15:27:57