Q&A

  • 특정폴더안에 *.TXT 확장명만 지울려면 어떻게
BAT 배치파일 만들어서 지울려고 합니다

C:TEMP
폴더 안에
*.TXT
확장명 전부 지울려면 어떻게 해야 하나요 ?


그리고...
rmdir C:TEMP /S/Q
이렇게 하면 TEMP 폴더가 지워 져서요 ...
TEMP폴더 안지워 지게 하는 명령어 옵션 / 없나요?

1  COMMENTS
  • Profile
    박성훈 2003.01.23 19:55

    안녕하세요?
    배치파일은 아니고 원하시는 기능의 함수입니다. path의 하위폴더에 있는 파일까지 삭제해 줍니다.

    procedure ClearFiles( Path, SearchName: String );
    var
       Directory: string;
       FileInfo : TSearchRec;
       Found : integer;
    begin
        Directory:= Path;
        if Path[Length(Path)] <> '' then Directory := Path + '';

        Found := FindFirst(Directory + SearchName, faAnyFile, FileInfo);

        while Found = 0 do
        begin
              if (FileInfo.Attr <> faDirectory) and (FileInfo.Name[1] <> '.') then
                  if FileInfo.FindData.cAlternateFileName <> '' then
                      DeleteFile(Directory + FileInfo.FindData.cAlternateFileName)
                  else
                      DeleteFile(Directory + FileInfo.FindData.cFileName);
              Application.ProcessMessages;
              Found := FindNext(FileInfo);
        end;
        FindClose(FileInfo);

        if FindFirst(Directory + '*.*', faDirectory, FileInfo) = 0 then
        begin
            repeat
                if ((FileInfo.Attr and faDirectory) = faDirectory) and (FileInfo.Name[1]<>'.') then
                begin
                   ClearFiles(Directory+FileInfo.Name+'', SearchName); // 재귀호출
                end;
                Application.ProcessMessages;
            until (FindNext(FileInfo) <> 0);
        end;

       FindClose(FileInfo);
    end;

    사용법
    ClearFiles('c:temp', '*.txt');