Удаление ехе файлов во всех папках и подпапках.
|
|
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 все они пишутся в кавычках '..' - это еще со времен 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); ошибка в этом коде почему?
Жизнь сложна когда учишься на своих ошибках, а зачем учиться на своих, не проще ли на чужих?
|
|
| |