Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Чистка флэшки

Ответить
Настройки темы
C/C++ - Чистка флэшки

Аватара для ddv122

Старожил


Сообщения: 222
Благодарности: 19


Конфигурация

Профиль | Отправить PM | Цитировать


Всем привет. Мне нужно по средствам с++ builder написать программу, которая будет при подключении съемных устройств, в автоматическом режиме, удалять все файлы допустим *.mp3
Возможно ли это?

Отправлено: 05:44, 18-02-2012

 

Аватара для ferget

Разный


Сообщения: 1294
Благодарности: 359

Профиль | Отправить PM | Цитировать


Цитата ddv122:
Удалять *.exe файл, если есть одноименная скрытая папка »
сначала находите имена всех exe без расширения

Код: Выделить весь код
TSearchRec sear;
AnsiString Path; 
AnsiString  Extension;
AnsiString  FileNoExt;  

    if(FindFirst(Path + "*.exe", faAnyFile, sear) == 0)
    {
        do
        { 
            Extension = ExtractFileExt(sear.Name);
            FileNoExt = Copy(sear.Name, 1, length(sear.Name) - length(Extension));
            ....................................
        }  
        while(FindNext(sear) == 0);
    }
 
    FindClose(sear);
затем находите папки faDirectory
сравниваете и удаляете не нужные

как-то так

Последний раз редактировалось ferget, 21-02-2012 в 04:57.

Это сообщение посчитали полезным следующие участники:

Отправлено: 04:45, 21-02-2012 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для ddv122

Старожил


Сообщения: 222
Благодарности: 19

Профиль | Отправить PM | Цитировать


El Scorpio, спасибо
Все разобрался
Код: Выделить весь код
{
AnsiString DirPath = Edit1->Text;
TStringList* ToDel = new TStringList();
ToDel->LoadFromFile("Spisok.txt");
AnsiString ObjectName;
for (int i = ToDel ->Count-1; i >= 0; i--)
{
   ObjectName = DirPath+ToDel->Strings[i];
   if (DirectoryExists) 
      RemoveDir (ObjectName);
   (FileExists); 
      DeleteFile (ObjectName);
      }
delete ToDel;
}
А возможно ли ещё сделать удаление файлов по маске?*.lnk к примеру

Последний раз редактировалось ddv122, 21-02-2012 в 14:40.


Отправлено: 13:59, 21-02-2012 | #12


Аватара для ferget

Разный


Сообщения: 1294
Благодарности: 359

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
TSearchRec sear;

    if(FindFirst(Path + "*.lnk", faAnyFile, sear) == 0)
    {
        do
        { 
            DeleteFile(sear.Name);
        }  
        while(FindNext(sear) == 0);
    }
 
    FindClose(sear);
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:32, 21-02-2012 | #13


Аватара для ddv122

Старожил


Сообщения: 222
Благодарности: 19

Профиль | Отправить PM | Цитировать


ferget, файлы находит но не удаляет

-------
Одна голова хорошо, а двух у меня нет...


Отправлено: 17:01, 21-02-2012 | #14


Аватара для ferget

Разный


Сообщения: 1294
Благодарности: 359

Профиль | Отправить PM | Цитировать


исправьте в коде
Код: Выделить весь код
          DeleteFile(Path+"\\"+sear.Name);
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:10, 21-02-2012 | #15


Аватара для ddv122

Старожил


Сообщения: 222
Благодарности: 19

Профиль | Отправить PM | Цитировать


ferget, спасибо большое, не подскажите
что бы
Код: Выделить весь код
 if(FindFirst(Path + "*.lnk", faAnyFile, sear) == 0)
Расширение указываем в коде программы, а возможно как сдесь
Цитата ddv122:
{
AnsiString DirPath = Edit1->Text;
TStringList* ToDel = new TStringList();
ToDel->LoadFromFile("Spisok.txt"); »
что бы список брался с файла Spisok.txt
и можно было бы удалять не 1 расширение *.lnk а не сколько допустим ещё *.mp3 и *.wav

Отправлено: 17:23, 21-02-2012 | #16


Аватара для ferget

Разный


Сообщения: 1294
Благодарности: 359

Профиль | Отправить PM | Цитировать


вам стоит подумать об использовании ini-файлов

пример ini
Код: Выделить весь код
[directory]
//тут список папок для удаления
[files]
//тут список файлов для удаления
[ext]
//тут список расширений для удаления
*.mp3
*.lnk
*.wav
тогда будет для расширений
Код: Выделить весь код
TIniFile *Ini = new TIniFile(путь к файлу .ini");
TSearchRec sear;
TStringList* ExtToDel= new TStringList();

ini->ReadSectionValues("ext", ExtToDel);

for (int i = ExtToDel ->Count-1; i >= 0; i--)
{
             if(FindFirst(Path + ExtToDel->Strings[i], faAnyFile, sear) == 0)
    {
        do
        { 
            DeleteFile(Path+"\\"+sear.Name);
        }  
        while(FindNext(sear) == 0);
    }
 
    FindClose(sear);
}
и для остальных аналогично
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:46, 21-02-2012 | #17


Аватара для ddv122

Старожил


Сообщения: 222
Благодарности: 19

Профиль | Отправить PM | Цитировать


Не удаляет почему то ярлыки
Код: Выделить весь код
{
 AnsiString Path = Edit1->Text;
 TIniFile *Ini = new TIniFile("spisok.ini");
TSearchRec sear;
TStringList* ExtToDel= new TStringList();

Ini->ReadSectionValues("ext", ExtToDel);

for (int i = ExtToDel ->Count-1; i >= 0; i--)
{
             if(FindFirst(Path + ExtToDel->Strings[i], faAnyFile, sear) == 0)
    {
        do
        {
              DeleteFile(Path+"\\"+sear.Name);
        }
        while(FindNext(sear) == 0);
    }

    FindClose(sear);
}
}
sposok.ini
Код: Выделить весь код
[directory]
\RESTORE\*
[files]
autorun.inf
[ext]
*.tmp
*.lnk
*.inf

Отправлено: 18:08, 21-02-2012 | #18


Аватара для ferget

Разный


Сообщения: 1294
Благодарности: 359

Профиль | Отправить PM | Цитировать


в общем в Ini-файл надо записывать так
Код: Выделить весь код
*.lnk=
а считывать
Код: Выделить весь код
Ini->ReadSection("ext", ExtToDel);
Это сообщение посчитали полезным следующие участники:

Отправлено: 20:06, 21-02-2012 | #19


Аватара для ddv122

Старожил


Сообщения: 222
Благодарности: 19

Профиль | Отправить PM | Цитировать


ferget, все ровно не работает

Код: Выделить весь код
{
 AnsiString Path = Edit1->Text;
 TIniFile *Ini = new TIniFile("spisok.ini");
TSearchRec sear;
TStringList* ExtToDel= new TStringList();

Ini->ReadSectionValues("ext", ExtToDel);

for (int i = ExtToDel ->Count-1; i >= 0; i--)
{
             if(FindFirst(Path + ExtToDel->Strings[i], faAnyFile, sear) == 0)
    {
        do
        {
              DeleteFile(Path+"\\"+sear.Name);
        }
        while(FindNext(sear) == 0);
    }

    FindClose(sear);
}
}
и ini

Код: Выделить весь код
[directory]
\RESTORE\*

[files]
autorun.inf

[ext]
*.mp3=
*.lnk=
*.inf=

Отправлено: 20:25, 21-02-2012 | #20



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Чистка флэшки

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - Чистка системников stranges Прочее железо 22 14-11-2011 17:01
Разное - Чистка ОС XP inline Microsoft Windows 2000/XP 4 06-05-2011 07:11
Принтер - Чистка принтера ReAL Прочее железо 10 25-03-2011 15:31
Чистка линз crowlik Оптические приводы 18 21-04-2009 11:23
Чистка рееестра bona Программное обеспечение Windows 6 17-02-2008 05:57




 
Переход