Воскресенье, 22.12.2024, 06:49 Приветствую вас Гость | Группа "Гости" 
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: xXxSh@dowxXx, Anton93, Волк-1024  
Удаление ехе файлов во всех папках и подпапках.
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
Группа: Модераторы
Сообщений: 317
Статус: 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
Группа: Пользователи
Сообщений: 253
Статус: Offline
Swan, '/' - разделитель между папками и файлом. Почему в кавычках? Потому что это текстовые значения - в Delphi все они пишутся в кавычках smile '..' - это еще со времен MS DOS - переход вверх по дереву каталога. Тоесть для нас это значит переход на предыдущую папку.

Да, и вот еще тут я когда-то выкладывал функцию поиска файлов:
http://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);  

ошибка в этом коде почему?


Жизнь сложна когда учишься на своих ошибках, а зачем учиться на своих, не проще ли на чужих?
 
  • Страница 1 из 1
  • 1
Поиск:

delphicode.ru © 2008 - 2024 Хостинг от uCoz