Удалите файлы из каталога, если имя файла содержит определенное слово

22
задан tshepang 23 August 2014 в 21:44
поделиться

4 ответа

Чтобы расширить ответ Хенка, вам нужно:

string rootFolderPath = @"C:\\SomeFolder\\AnotherFolder\\FolderCOntainingThingsToDelete";
string filesToDelete = @"*DeleteMe*.doc";   // Only delete DOC files containing "DeleteMe" in their filenames
string[] fileList = System.IO.Directory.GetFiles(rootFolderPath, filesToDelete);
foreach(string file in fileList)
{
    System.Diagnostics.Debug.WriteLine(file + "will be deleted");
//  System.IO.File.Delete(file);
}

БУДЬТЕ ОСТОРОЖНЫ!

Обратите внимание, что я закомментировал команду удаления. Запустите его и тщательно протестируйте , прежде чем позволить ему что-либо удалить!

Если вы хотите рекурсивно удалять файлы во ВСЕХ подпапках корневой папки, добавьте System.IO.SearchOption.AllDirectories); к вызову GetFiles.

Если вы сделаете это, то также очень неплохо отказаться от запуска, если rootFolderPath имеет длину менее 4 символов (простая защита от удаления всего в C: \ - Я был там и делал это, и это не весело !!!)

50
ответ дан 29 November 2019 в 03:37
поделиться
new List<string>(Directory.GetFiles(@"C:\Folder")).ForEach(file => { if (file.ToUpper().Contains("apple".ToUpper())) File.Delete(file); });
0
ответ дан 29 November 2019 в 03:37
поделиться

Примерно так:

string DeleteThis = "apple";
string[] Files = Directory.GetFiles(@"C:\Folder");

foreach (string file in Files)
{
    if (file.ToUpper().Contains(DeleteThis.ToUpper()))
    {
        File.Delete(file);
    }
}
5
ответ дан 29 November 2019 в 03:37
поделиться

Вы можете использовать System.IO.Directory.GetFiles () для списка файлов в формате строки [].

Затем вы можете использовать ] System.IO.File.ReadAllText () , чтобы прочитать файлы целиком, или, если они очень большие, откройте TextReader с помощью System.IO.File.OpenText () .

Если вы ищете буквальное ключевое слово, String.Contains () - это все, что вам нужно.

Удалить файл можно с помощью System.IO.File.Delete () . Убедитесь, что файл снова закрыт.

Edit, 2 примера GetFiles () :

string[] fileNames = System.IO.Directory.GetFiles(@"C:\");
string[] fileNames = System.IO.Directory.GetFiles(@"C:\", @"*.sys");
8
ответ дан 29 November 2019 в 03:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: