![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Чистка флэшки |
|
C/C++ - Чистка флэшки
|
![]() Старожил Сообщения: 222 |
Всем привет. Мне нужно по средствам с++ builder написать программу, которая будет при подключении съемных устройств, в автоматическом режиме, удалять все файлы допустим *.mp3
Возможно ли это? |
|
Отправлено: 05:44, 18-02-2012 |
Разный Сообщения: 1294
|
Профиль | Отправить PM | Цитировать вот у вас есть два списка
допустим list1 - список файлов list2 - список папок вот так сравниваете |
Отправлено: 03:44, 12-03-2012 | #41 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
![]() Старожил Сообщения: 222
|
Профиль | Отправить PM | Цитировать Цитата ferget:
Т.е все папки с диска, а не со spisok.txt |
|
------- Последний раз редактировалось Drongo, 14-03-2012 в 16:28. Причина: [code] Отправлено: 11:09, 14-03-2012 | #42 |
Разный Сообщения: 1294
|
Профиль | Отправить PM | Цитировать вот полный код, удаляет только папки указанные в Spisok.txt
#include <vcl.h> #include "dstring.h" #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; bool DeleteDir(AnsiString DirName); //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { 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) { DeleteDir(ObjectName); RemoveDir (ObjectName); }else (FileExists); DeleteFile (ObjectName); } delete ToDel; } //--------------------------------------------------------------------------- bool DeleteDir(AnsiString DirName) { TSearchRec sr; if (DirName.Length()) { if (!FindFirst(DirName+"\\*.*",faAnyFile,sr)) do { if (!(sr.Name=="." || sr.Name=="..")) if (((sr.Attr & faDirectory) == faDirectory ) || (sr.Attr == faDirectory)) { FileSetAttr(DirName+"\\"+sr.Name, faDirectory ); DeleteDir(DirName+"\\"+sr.Name); RemoveDir(DirName + "\\"+sr.Name); } else { FileSetAttr(DirName+"\\"+sr.Name, 0); DeleteFile(DirName+"\\"+sr.Name); } } while (!FindNext(sr)); FindClose(sr); } RemoveDir(DirName); return true; } |
Отправлено: 20:18, 14-03-2012 | #43 |
![]() Старожил Сообщения: 222
|
Профиль | Отправить PM | Цитировать Цитата ferget:
Путь беру с Edit1 H:// Если не указана функция bool DeleteDir(AnsiString DirName) { TSearchRec sr; if (DirName.Length()) { if (!FindFirst(DirName+"\\*.*",faAnyFile,sr)) do { if (!(sr.Name=="." || sr.Name=="..")) if (((sr.Attr & faDirectory) == faDirectory ) || (sr.Attr == faDirectory))// найдена папка { FileSetAttr(DirName+"\\"+sr.Name, faDirectory ); DeleteDir(DirName+"\\"+sr.Name); RemoveDir(DirName + "\\"+sr.Name); } else { FileSetAttr(DirName+"\\"+sr.Name, 0); DeleteFile(DirName+"\\"+sr.Name); } } while (!FindNext(sr)); FindClose(sr); } RemoveDir(DirName); return true |
|
Последний раз редактировалось ddv122, 17-03-2012 в 14:01. Отправлено: 23:18, 14-03-2012 | #44 |
![]() Старожил Сообщения: 222
|
Профиль | Отправить PM | Цитировать Не подскажите как этот код переделать для удаления папок и файлов
{ AnsiString Path = Edit1->Text; TSearchRec sear; TStringList* ExtToDel= new TStringList(); TIniFile* Ini = new TIniFile(ExtractFilePath( Application->ExeName ) +"spisok.ini"); Ini->ReadSection("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); dt = Now();// формат даты memo->Lines->Add(DateToStr(dt) +" " + TimeToStr(dt) +" " + " - "+"Удален ярлык : "+Path+sear.Name+", размер: " +IntToStr(sear.Size)+" байт"); } while(FindNext(sear) == 0); } FindClose(sear); } delete ExtToDel; delete Ini; } |
------- Отправлено: 12:20, 26-03-2012 | #45 |
Разный Сообщения: 1294
|
Профиль | Отправить PM | Цитировать Цитата ddv122:
|
|
Отправлено: 14:17, 26-03-2012 | #46 |
![]() Старожил Сообщения: 222
|
Профиль | Отправить PM | Цитировать |
------- Отправлено: 15:10, 26-03-2012 | #47 |
Разный Сообщения: 1294
|
Профиль | Отправить PM | Цитировать |
Отправлено: 05:13, 27-03-2012 | #48 |
![]() Старожил Сообщения: 222
|
Профиль | Отправить PM | Цитировать { AnsiString Path = Edit1->Text; TSearchRec sear; TStringList* ExtToDel= new TStringList(); TStringList* FileToDel= new TStringList(); TStringList* FolderToDel= new TStringList(); TIniFile* Ini = new TIniFile(ExtractFilePath( Application->ExeName ) +"spisok.ini"); Ini->ReadSection("ext", ExtToDel); ..... Ini->ReadSection("files", FileToDel); ........... Ini->ReadSection("Folder", FolderToDel); } |
------- Отправлено: 11:57, 27-03-2012 | #49 |
Разный Сообщения: 1294
|
Профиль | Отправить PM | Цитировать например так для файлов
AnsiString Path = Edit1->Text; TSearchRec sear; TStringList* ExtToDel= new TStringList(); TStringList* FileToDel= new TStringList(); TIniFile* Ini = new TIniFile(ExtractFilePath( Application->ExeName ) +"spisok.ini"); Ini->ReadSection("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); dt = Now();// формат даты memo->Lines->Add(DateToStr(dt) +" " + TimeToStr(dt) +" " + " - "+"Удален ярлык : "+Path+sear.Name+", размер: " +IntToStr(sear.Size)+" байт"); } while(FindNext(sear) == 0); } FindClose(sear); } delete ExtToDel; Ini->ReadSection("files", FileToDel); AnsiString ObjectName; for (int i = FileToDel ->Count-1; i >= 0; i--) { ObjectName = DirPath+ FileToDel->Strings[i]; DeleteFile (ObjectName); } delete FileToDel; delete Ini; хотя лучше вынести в отдельную функцию |
Отправлено: 13:18, 27-03-2012 | #50 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Разное - Чистка системников | 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 |
|