Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
nullpointer
46 / 46 / 5
Регистрация: 30.03.2009
Сообщений: 522
#1

Удалить файлы с одним расширением - C++

21.04.2013, 00:24. Просмотров 870. Ответов 2
Метки нет (Все метки)

Доброго времени суток всем! Встала такая задача: удалить все файлы с одинаковым расширением. Знаю есть такая функция
C++
1
remove("c:\file.log");
Но она удаляет только заданный файл в заданной директории.
А хотелось бы иметь что то вроде:
C++
1
remove("c:\*.log");
Т.е. просто прописать расширение файла и диск (не директорию!) на котором нужно провести удаление, т.е. получается что нужно еще реализовать рекурсивный поиск по маске. Можно это как-нибудь не сложно реализовать?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.04.2013, 00:24
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Удалить файлы с одним расширением (C++):

Для чего нужны файлы с расширением .h, .c? - C++
Не подскажите, для чего нужен (.h) и (.c) файл? А (.cpp)? Я читал, что это заголовочный файл, но за зачем он нужен?

Удалить все символы в строке, не являющиеся буквами и заменить множественные пробелы одним - C++
Ребята,буду запредельно благодарен.

Последовательности следующих друг за другом пробелов заменить одним пробелом (т.е. удалить все пробелы, следующие непосредственно за пробелом) - C++
Последовательности следующих друг за другом пробелов заменить одним пробелом (т.е. удалить все пробелы, следующие непосредственно за...

Удалить группы пробелов, которыми начинается и заканчивается строка, а каждую внутреннюю группу пробелов заменить одним пробелом - C++
Задана строка символов. Преобразовать эту строку следующим образом: удалить группы пробелов, которыми начинается и заканчивается строка, а...

удалить старые файлы - C++
Добрый день. Мне нужно написать небольшой код, который бы автономно удалял старые файлы из каталога, которым уже 30 дней. Файлы...

Копировать, перенести, удалить файлы в C++ - C++
Здравствуйте ребята, я новичок в С++, и мне нужен ваш совет, как профессиональных программистов. Я пишу консольную программу, которая на...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
metaluga145
243 / 244 / 20
Регистрация: 08.04.2013
Сообщений: 927
21.04.2013, 00:35 #2
Боюсь легко не получится. Существует такая вещь как WINAPI. Там есть поиск по файлам в папке FindFirstFile и FindNextFile. Здесь написано что да как и откуда получить имя файла, а уж если знаете имя файла, то последние буквочки и будут вашим расширением файла. Читай, задавайте вопросы.
http://zetblog.ru/programming/200902...6%D0%B8%D0%B8/
0
nullpointer
46 / 46 / 5
Регистрация: 30.03.2009
Сообщений: 522
21.04.2013, 21:45  [ТС] #3
Вот такая программа получилась, но... Если при вызове функции явно указать имя файла, то все отлично, а если указать *.txt - remove возвращает -1. И если файл положить в подпапку, то опять же не работает. Можете помочь исправить?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <conio.h>
#include <Windows.h>
 
#include <iostream>
 
void FindRecursive(char *path, char *mask){
    WIN32_FIND_DATA finddata;
    char p[512], buf[512];
    HANDLE hFind;
    bool removed;
 
// ищем файлы
    sprintf_s(p,"%s\\%s",path, mask);
    hFind = FindFirstFile(p, &finddata);
    if(hFind!=INVALID_HANDLE_VALUE){
        do{
// удаляем найденные файлы
            int result = remove(p);
            printf("%d\n", result);
        }while(FindNextFile(hFind, &finddata));
 
    }
 
    FindClose(hFind);
    
// ищем подпапки
 
    //sprintf_s(p,"%s\\*",path);
    hFind = FindFirstFile(p, &finddata);
    if(hFind!=INVALID_HANDLE_VALUE){
        do{
            if ((finddata.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)){
                if (strcmp(finddata.cFileName,"..") && strcmp(finddata.cFileName,".")){
                    FindRecursive(buf, mask);
                }
            }
        }while(FindNextFile(hFind, &finddata));
 
    }
 
    FindClose(hFind);
 
}
 
void main(){
    FindRecursive("C:\\del", "*.txt");
  _getch();
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.04.2013, 21:45
Привет! Вот еще темы с ответами:

Как удалить папку и все файлы в ней? - C++
Проблема в том, что папка удаляется только в том случае, если она пуста. А вот если в ней файл, то нет. Подскажите как удалить папку и все...

удалить пробелы из текста (файлы последовательного доступа) - C++
нужно написать программу на си которая состоит из трех или более функций одна из которых формирует текстовый файл f из нескольких строк ...

Как удалить все файлы в папке без WinAPI ? - C++
Ну собственно дубль шапки: Как удалить все файлы в папке без WinAPI ? Тоесть на чистом C++ без BOOST, QT и пр и не на последнем...

Как удалить каталог, который имеет вложеные папки и файлы? - C++
С помощью каких средств это можно реализовать? Есть функция _rmdir(const char*) в direct.h, но она удаляет только пустой каталог. Я...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru