System.Diagnostics.Process — команда Del

Я пытаюсь запустить команду del, используя System.Diagnostic.Process. В основном я хочу удалить все с диска C: \ с именем файла * .bat

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();

Однако при запуске кода возникает исключение «система не может найти указанный файл». Я знаю, что в этой корневой папке определенно есть файлы, содержащие это расширение.


person wonea    schedule 29.03.2010    source источник


Ответы (3)


Вам не нужно запускать команду del. Вы можете удалять файлы из C#.

        var files = new DirectoryInfo("C:\\").GetFiles("*.bat");
        foreach (FileInfo fi in files)
        {
            fi.Delete();
        }
person Marek    schedule 29.03.2010
comment
Я использовал io и некоторые другие методы, но у меня были проблемы с UAC и разрешениями вне профиля пользователя. Если бы я изменил манифест для выполнения от имени администратора, он не смог бы правильно определить вошедшего в систему пользователя для задач, которые мне нужно было выполнить. - person JoshF; 22.01.2015

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

person Dave Markle    schedule 29.03.2010
comment
Интересно, я учту это для других консольных команд, если не смогу найти функциональность .Net. - person wonea; 29.03.2010
comment
cmd.exe /c также полезен в тех случаях, когда вы хотите запустить пакетный файл из класса Process. - person Dave Markle; 29.03.2010

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

person Adam Robinson    schedule 29.03.2010