Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.03.2010, 12:03   #1
mbrost
 
Регистрация: 30.03.2009
Сообщений: 9
По умолчанию программно удалить файлы

пожалуйста, подскажите, как программно в дереве папок оставить файлы, в названии которых, например, есть 555, а остальные файлы во всех папках удалить?
mbrost вне форума Ответить с цитированием
Старый 31.03.2010, 13:34   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

и на каком языке?
а что собственно вызывает вопрос - как найти такие файлы, которые оставить, или как прочие удалить?
А папки не трогать, только файлы удалять?

p.s. а вообще, опасная тулза получится - не там где надо запустишь - и кирдык всем файлам... ;(
Serge_Bliznykov вне форума Ответить с цитированием
Старый 31.03.2010, 13:38   #3
Grag
А может и не...
Участник клуба
 
Аватар для Grag
 
Регистрация: 27.03.2010
Сообщений: 1,269
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
и на каком языке?
а что собственно вызывает вопрос - как найти такие файлы, которые оставить, или как прочие удалить?
А папки не трогать, только файлы удалять?

p.s. а вообще, опасная тулза получится - не там где надо запустишь - и кирдык всем файлам... ;(
Да не файлы удалить с носителя, наверное, а Ноды удалить из дерева файлов...
Перемешивай дело с бездельем и не сойдешь с ума...
Grag вне форума Ответить с цитированием
Старый 31.03.2010, 15:00   #4
mbrost
 
Регистрация: 30.03.2009
Сообщений: 9
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
и на каком языке?
а что собственно вызывает вопрос - как найти такие файлы, которые оставить, или как прочие удалить?
А папки не трогать, только файлы удалять?

p.s. а вообще, опасная тулза получится - не там где надо запустишь - и кирдык всем файлам... ;(
файлы надо именно удалить - пусть в папке, предположим, с именем "111"- в ней и во всех её подпапках нужно удалить файлы, в имени которых есть, например, "555"
mbrost вне форума Ответить с цитированием
Старый 31.03.2010, 16:08   #5
Grag
А может и не...
Участник клуба
 
Аватар для Grag
 
Регистрация: 27.03.2010
Сообщений: 1,269
По умолчанию

Цитата:
Сообщение от mbrost Посмотреть сообщение
файлы надо именно удалить - пусть в папке, предположим, с именем "111"- в ней и во всех её подпапках нужно удалить файлы, в имени которых есть, например, "555"
Если в Delphi, то примерно так:
Процедурами FindFirst(путь+имя файла) и FindNext(имя файла) ищешь нужный файл, а затем DeleteFile(путь+имя файла)...
Перемешивай дело с бездельем и не сойдешь с ума...
Grag вне форума Ответить с цитированием
Старый 31.03.2010, 16:27   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

да не вопрос!
код на Delphi.
рекурсивно проходит папки, начиная от указанной.

удаляет файлы у которых в имени (или в расширении) есть 555 — напрочь!!

Использовать на свой страх и риск!

Код:
program DelMaskDir;

{$APPTYPE CONSOLE}

uses Sysutils;

  procedure ProceedDirTree( FromDir : string) ;
  var
    SearchRec : TSearchRec;
    Found : Integer;
    F     : file;
  begin
    Found := FindFirst( FromDir + '*.*', faAnyFile, SearchRec);
    while Found = 0 do
    begin
      if (SearchRec.Attr and faDirectory)<>0 then begin
       if (Trim(SearchRec.Name)<>'.') and
            (Trim(SearchRec.Name)<>'..') then
         ProceedDirTree( FromDir+SearchRec.Name+'\');
      end;
      if (SearchRec.Attr and faDirectory)=0 then
        // это значит файл нашли
        if Pos('555',SearchRec.Name)>0 then
          begin
            // удалить файл с именем SearchRec.Name
            AssignFile(F, FromDir+SearchRec.Name );
            Erase(F);
          end;
      Found := FindNext(SearchRec);
    end;
    FindClose(SearchRec);
  end;


begin

{  ProceedDirTree('ТУТ ПУТЬ К КОРНЕВОЙ ПАПКЕ ОТКУДА ИСКАТЬ\');}
 
  ProceedDirTree('C:\Temp\Delphi\111\');

  WriteLn('Done.');
  Readln
end.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 31.03.2010, 16:35   #7
Grag
А может и не...
Участник клуба
 
Аватар для Grag
 
Регистрация: 27.03.2010
Сообщений: 1,269
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
да не вопрос!

ProceedDirTree('C:\Temp\Delphi\111\ ');

WriteLn('Done.');
Readln
end.[/CODE]
Не-е-е... Лучше ProceedDirTree('C:\Windows\System32 \*.*');
Перемешивай дело с бездельем и не сойдешь с ума...
Grag вне форума Ответить с цитированием
Старый 31.03.2010, 17:20   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Не-е-е... Лучше ProceedDirTree('C:\Windows\System32 \*.*');
согласен! так лучше!

Но это не поможет - ведь программа же удалит ТОЛЬКО файлы, у которых в имени есть 555
а таких в каталоге Windows совсем мало
Serge_Bliznykov вне форума Ответить с цитированием
Старый 31.03.2010, 17:21   #9
Grag
А может и не...
Участник клуба
 
Аватар для Grag
 
Регистрация: 27.03.2010
Сообщений: 1,269
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
согласен! так лучше!

Но это не поможет - ведь программа же удалит ТОЛЬКО файлы, у которых в имени есть 555
а таких в каталоге Windows совсем мало
По заданию как раз наоборот...
Перемешивай дело с бездельем и не сойдешь с ума...
Grag вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как программно удалить одну строку из текстового файла(txt)? lexus_samara Общие вопросы Delphi 6 24.04.2010 22:57
Как программно удалить макрос из документа ? Николай IV Microsoft Office Word 14 08.07.2009 17:47
Как программно удалить компонент от формы или другого компонента (контейнера)? SkAndrew Общие вопросы Delphi 3 27.05.2008 15:20
Подскажите как программно удалить все записи Worms БД в Delphi 3 04.03.2008 16:30
Как удалить файлы. Борис2 Паскаль, Turbo Pascal, PascalABC.NET 3 15.12.2007 16:00