2010-03-29 2 views
1

Я пытаюсь запустить команду del с помощью System.Diagnostic.Process. В основном я хочу, чтобы удалить все из C: \ диск, который имеет имя файла * .batSystem.Diagnostics.Process - Del Command

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

+0

Я использовал io и некоторые другие методы, но имел проблемы с UAC и разрешениями вне профиля пользователя. Если я изменил манифест для выполнения как администратора, тогда он не смог бы правильно определить пользователя, который в настоящий момент вошел в систему, для задач, которые мне нужно выполнить. – JoshF

7

"del" не является исполняемым. Это команда, выполняемая командным интерпретатором cmd.exe. Вместо запуска «del» запустите cmd.exe /c "del foo.txt".

+0

Интересно, я буду иметь это в виду для других консольных команд, если я не могу найти функциональность .Net. – wonea

+0

cmd.exe/c также полезен в тех случаях, когда вы хотите запустить командный файл из класса Process. –

0

del - консольная команда, а не приложение, которое может быть запущено через класс Process. Есть ли причина, по которой вы это делаете, вместо использования управляемых классов в пространстве имен System.IO?

+0

Для этого я лаял не то дерево, признаюсь. – wonea

Смежные вопросы