Использование командной строки для удаления определенных файлов в папке загрузок - PullRequest
0 голосов
/ 11 марта 2019

Я пытаюсь использовать следующий код для удаления определенных файлов из папки загрузок -

var process = new Process();
            var startInfo = new ProcessStartInfo
            {
                WindowStyle = ProcessWindowStyle.Normal,
                FileName = "cmd.exe",
                RedirectStandardInput = true,
                UseShellExecute = false
            };

            process.StartInfo = startInfo;
            process.Start();

            process.StandardInput.WriteLine("cd C://users/%username%/downloads");
            process.StandardInput.WriteLine("del /f Secci*");

При отладке кода - окно командной строки мигает открытым, но затем мгновенно закрывается (даже при том, что это не указывало, что оно скрыто в коде), поэтому я изо всех сил пытаюсь понять, удастся ли ему вообще скопировать CD в правильный каталог. В настоящее время файлы не удаляются из папки загрузок. Это часть класса «Перед тестом» в рамках нашего проекта автоматизации тестирования. Было бы здорово, если бы кто-то мог дать несколько советов о том, почему это может не сработать?

Ответы [ 2 ]

1 голос
/ 11 марта 2019

Для удаления в командной строке.Попробуйте это

string file = "Secci*";          
Process process = new Process();
process.StartInfo.RedirectStandardInput = true;
process.StartInfo.FileName = "cmd.exe";
process.StartInfo.UseShellExecute = false;
process.Start();
process.StandardInput.WriteLine("cd C://users/%username%/downloads");          
process.StandardInput.WriteLine(string.Format("del \"{0}\"", file)); 

Если вы пытаетесь использовать System.IO, попробуйте это.

using System.IO;

string file = "Secci*";  
//Because "SpecialFolder" doesn't have Downloads in it, this is my workaround. There may be better ones out there.
string path = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
path = path.Replace("Documents", "Downloads"); 
string[] List = Directory.GetFiles(path, file);
foreach (string f in List)
{
   File.Delete(f);
}
0 голосов
/ 11 марта 2019

Вы можете получить все файлы, перечислив каталог.Если у вас есть файлы, соответствующие вашим критериям, вы можете выполнять итерацию по ним и выполнять над ними действия.

var dir = new DirectoryInfo("C://users/%username%/downloads");

foreach (var file in dir.EnumerateFiles("Secci*")) {
    file.Delete();
}

https://docs.microsoft.com/en-us/dotnet/api/system.io.directory.enumeratefiles?view=netframework-4.7.2

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...