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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.11.2010, 21:29   #1
xJohnx
Пользователь
 
Регистрация: 19.04.2010
Сообщений: 80
По умолчанию Удаление содержимого в папке Temp

Как написать такую программу?
xJohnx вне форума Ответить с цитированием
Старый 24.11.2010, 21:55   #2
wm_leviathan
Форумчанин
 
Аватар для wm_leviathan
 
Регистрация: 17.02.2010
Сообщений: 399
По умолчанию

папка Temp это та что в Windows\Temp или это вы где то сами создали ее
к примеру c:\123\Temp ?

если винда то можно так:

узнаем путь к винде (мб она на "д" диске)
Код:
function TForm2.GetWindowsDir: string;
var S: array[0..MAX_PATH] of Char;
begin
  GetWindowsDirectory(S,SizeOf(S));
  Result:=S;
end;
функция удаления файлов
Код:
function TForm2.DelDir (Dir: AnsiString): boolean;
var
  Sr: SysUtils.TSearchRec;
begin
{$I-}
  if (Dir <> '') and (Dir[length(Dir)] = '\') then
    Delete(Dir, length(dir), 1);
  if FindFirst(Dir + '\*.*', faDirectory + faHidden + faSysFile +
    faReadonly + faArchive, Sr) = 0 then
    repeat
      if (Sr.Name = '.') or (Sr.Name = '..') then
        continue;
      if (Sr.Attr and faDirectory <> faDirectory) then
   begin
        FileSetReadOnly(Dir + '\' + sr.Name, False);
        DeleteFile(Dir + '\' + sr.Name);
   end
      else
        DelDir(Dir + '\' + sr.Name);
    until FindNext(sr) <> 0;
  FindClose(sr);
  RemoveDir(Dir); // Удалит пустой каталог
  DelDir := (FileGetAttr(Dir) = -1);
end;
и нажатие кнопочки
Код:
procedure TForm2.Button1Click(Sender: TObject);
var
Path: string;
begin

Path:=GetWindowsDir+'\Temp\';
DelDir(Path);
end;

Последний раз редактировалось wm_leviathan; 24.11.2010 в 22:23.
wm_leviathan вне форума Ответить с цитированием
Старый 24.11.2010, 22:22   #3
unbanned
Форумчанин
 
Аватар для unbanned
 
Регистрация: 23.11.2010
Сообщений: 530
По умолчанию

если брать delphi, то через WinAPI
Код:
procedure DeleteFiles(Path: string);
var
  Mask: string;
  SearchRec: TSearchRec;
  FindResult: Integer;
  List: TStringList;
  i: Integer;
begin
  Mask := ExtractFileName(Path);
  if Mask = '' then
    Mask := '*.*';
  Path := ExtractFilePath(Path);
  if Path = '' then
    Path := IncludeTrailingBackslash(GetCurrentDir);
  List := TStringList.Create;
  try
    FindResult := FindFirst(Path + '*.*', faAnyFile, SearchRec);
    try
      while FindResult = 0 do
        with SearchRec do
        begin
          if ((Attr and faDirectory) = 0) and MatchesMask(Name, Mask) then
            List.Add(Name);
          FindResult := FindNext(SearchRec);
        end;
      for i := 0 to List.Count - 1 do
        DeleteFile(Path + List[i]);
    finally
      FindClose(SearchRec);
    end;
  finally
    List.Free;
  end;
end;
процедура взята из гугла

Последний раз редактировалось unbanned; 24.11.2010 в 22:25.
unbanned вне форума Ответить с цитированием
Старый 24.11.2010, 22:30   #4
wm_leviathan
Форумчанин
 
Аватар для wm_leviathan
 
Регистрация: 17.02.2010
Сообщений: 399
По умолчанию

1.
Цитата:
if ((Attr and faDirectory) = 0) and MatchesMask(Name, Mask) then
MatchesMask непонятная функция возможно самописная.
2. не вижу где удаление папок если оно там вообще есть. В папке Temp куча папок и подпапок которые надо сносить зачем они там пустые будут валяться ?
wm_leviathan вне форума Ответить с цитированием
Старый 24.11.2010, 22:56   #5
unbanned
Форумчанин
 
Аватар для unbanned
 
Регистрация: 23.11.2010
Сообщений: 530
По умолчанию

1. нет, почему, она проеверяет соответствия строки маске. только надо подключить модуль masks.
2. здесь очистка папки от файлов
unbanned вне форума Ответить с цитированием
Старый 25.11.2010, 01:08   #6
*PB*
Форумчанин
 
Регистрация: 11.08.2009
Сообщений: 558
По умолчанию

Удаление файлов и папок из папки Temp.
Код на PureBasic (для Windows, Linux и MacOS X).
Код:
TempDir.s=GetTemporaryDirectory()
If TempDir
  If ExamineDirectory(0,TempDir,"*.*")
    While NextDirectoryEntry(0)
      Name.s=TempDir+DirectoryEntryName(0)
      If DirectoryEntryType(0) = #PB_DirectoryEntry_File
        DeleteFile(Name)
      Else
        If DirectoryEntryName(0)<>"." And DirectoryEntryName(0)<>".."
          DeleteDirectory(Name, #PB_FileSystem_Recursive | #PB_FileSystem_Force)
        EndIf
      EndIf
    Wend
    FinishDirectory(0)
  EndIf
EndIf

Последний раз редактировалось *PB*; 25.11.2010 в 01:10.
*PB* вне форума Ответить с цитированием
Старый 25.11.2010, 08:53   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Для Винды достаточно консольного скрипта Del c:\temp\ /s /f /q
В Линуксе тоже, ИМХО и в МакОсе
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удаление содержимого соседних ячеек после ввода данных. KOSTIK1 Microsoft Office Excel 3 29.12.2009 16:53
Быстрое удаление содержимого ячеек gadspider Microsoft Office Excel 11 18.07.2009 12:08
Microsoft Office Outlook : удаление папок в папке контакты bufer Софт 0 05.12.2007 16:58
Отслеживает появление в папке файлов. слежение за определенным файлом в определенной папке. RammFan Win Api 1 09.06.2007 11:09
tess temp.db Bob Marley БД в Delphi 1 13.04.2007 08:55