Удаление ехе файлов во всех папках и подпапках.
|
Swan
|
Дата: Среда, 19.06.2013, 13:57 | Сообщение # 1
|
Новичок
Зарегистрирован: 16.06.2013
Группа: Пользователи
Сообщений: 45
Статус: Offline
|
Собственно как это реализовать?
Жизнь сложна когда учишься на своих ошибках, а зачем учиться на своих, не проще ли на чужих?
|
|
|
|
|
Anton93
|
Дата: Среда, 19.06.2013, 14:05 | Сообщение # 2
|
Продвинутый
Зарегистрирован: 06.01.2010
Группа: Модераторы
Сообщений: 320
Статус: Offline
|
Swan, рекурсивной функцией чтения и удалением по маске аля *.exe
ICQ: 41896
|
|
|
|
|
Swan
|
Дата: Среда, 19.06.2013, 14:14 | Сообщение # 3
|
Новичок
Зарегистрирован: 16.06.2013
Группа: Пользователи
Сообщений: 45
Статус: Offline
|
Цитата (Anton93)
рекурсивной функцией чтения и удалением по маске аля *.exe
Можно пж код, а то я программист 1 уровня и хз что с чем едят.
Жизнь сложна когда учишься на своих ошибках, а зачем учиться на своих, не проще ли на чужих?
|
|
|
|
|
Neo
|
Дата: Среда, 19.06.2013, 17:41 | Сообщение # 4
|
Модератор
Зарегистрирован: 04.05.2010
Группа: Модераторы
Сообщений: 316
Статус: Offline
|
А вот тебе и проца)
Код
procedure DelFile(StartDir,Mask: string);
const Mas = '*.*';
var
SearchRec: TSearchRec;
i:byte;
begin
if StartDir[Length(StartDir)] <> '\' then
StartDir := StartDir + '\';
if FindFirst(StartDir + Mas, faAnyFile, SearchRec) = 0 then
begin
repeat
if (SearchRec.Attr and faDirectory) <> faDirectory then
begin
i:=pos(Mask,SearchRec.Name);
if i = Length(SearchRec.Name) - Length(Mask)+1 then
DeleteFile(StartDir + SearchRec.Name);
end else
if (SearchRec.Name <> '..') and (SearchRec.Name <> '.')then
begin
i:=pos(Mask,SearchRec.Name);
if i = Length(SearchRec.Name) - Length(Mask)+1 then
DeleteFile(StartDir + SearchRec.Name);
ScanDir(StartDir + SearchRec.Name + '\', Mask);
end;
until FindNext(SearchRec) <> 0;
FindClose(SearchRec);
end;
end;
Вызывать так:
Код
DelFiles('D:\del', 'exe');
Это удалит все exe файлы,начиная с D:\del
|
|
|
|
|
Swan
|
Дата: Среда, 19.06.2013, 18:48 | Сообщение # 5
|
Новичок
Зарегистрирован: 16.06.2013
Группа: Пользователи
Сообщений: 45
Статус: Offline
|
Спс, только что за палки стоят в ковычках \ это надо путь писать к файлам, или что это значит? И почему тут две точки? туда тоже надо писать путь до удаляемой папки или файла? if (SearchRec.Name <> '..') and (SearchRec.Name <> '.')then
Жизнь сложна когда учишься на своих ошибках, а зачем учиться на своих, не проще ли на чужих?
|
|
|
|
|
Don_Diego
|
Дата: Среда, 19.06.2013, 22:29 | Сообщение # 6
|
Продвинутый
Зарегистрирован: 16.04.2012
Группа: Пользователи
Сообщений: 251
Статус: Offline
|
Swan, '/' - разделитель между папками и файлом. Почему в кавычках? Потому что это текстовые значения - в Delphi все они пишутся в кавычках '..' - это еще со времен MS DOS - переход вверх по дереву каталога. Тоесть для нас это значит переход на предыдущую папку.
Да, и вот еще тут я когда-то выкладывал функцию поиска файлов:
https://delfcode.ru/forum/10-922-1
PS: рекомендую перед удалением таких файлов - завершать их работу, если те были запущены. Процедуру по завершению процессов ищите там же. |
|
|
|
|
Swan
|
Дата: Четверг, 20.06.2013, 11:11 | Сообщение # 7
|
Новичок
Зарегистрирован: 16.06.2013
Группа: Пользователи
Сообщений: 45
Статус: Offline
|
Спасибо
Добавлено (20.06.2013, 11:11)
---------------------------------------------
Цитата (Neo)
ScanDir(StartDir + SearchRec.Name + '\', Mask);
ошибка в этом коде почему?
Жизнь сложна когда учишься на своих ошибках, а зачем учиться на своих, не проще ли на чужих?
|
|
|
|
|