|
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 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 | |
|