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

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

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

C++ удалить старые файлы
C++ Как удалить каталог, который имеет вложеные папки и файлы?
Удалить все символы в строке, не являющиеся буквами и заменить множественные пробелы одним C++
C++ удалить пробелы из текста (файлы последовательного доступа)
Удалить группы пробелов, которыми начинается и заканчивается строка, а каждую внутреннюю группу пробелов заменить одним пробелом C++
Как удалить все файлы в папке без WinAPI ? C++
Копировать, перенести, удалить файлы в C++ C++
C++ Почему тип "bool" работает в файле с расширением .cpp и не работает в файле с расширением .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/
nullpointer
 Аватар для nullpointer
45 / 45 / 5
Регистрация: 30.03.2009
Сообщений: 518
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();
}
Yandex
Объявления
21.04.2013, 21:45     Удалить файлы с одним расширением
Ответ Создать тему
Опции темы

Текущее время: 02:08. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru