델파이

와일드카드(*) 사용한 일괄 파일삭제

미스터몽키 2016. 6. 8. 18:37

명령프롬프트에서는   와일드카드 (*) 를 이용한 파일 삭제를 편리하게 할 수 있다.

예를 들어 디렉터리 내에 다음과 같은 파일 들이 있을 때

a20160501.jpg

a20160502.jpg

a20160503.jpg


a20160601.jpg

a20160602.jpg

a20160603.jpg


a로 시작하는 201605 월 파일들만 삭제하려고 할 때


명령프롬프트에서는  다음과 같이 실행하면 여러개의 파일을 일괄로 삭제할 수 있었다.



델파이에서는 기본적으로 DeleteFile 함수만 존재한다.


따라서 다음 처럼 프로시저를 만들어서 파일을 찾아가면서 일일이 처리하면 가능하다.


procedure TForm1.Deletefile_WildCard(aPathFname_Wild: string);   // 와일드카드 파일삭제
var
  vSearchRec: TSearchRec;
  vFind: integer;
  vPath, vFname:string;
begin
  // aPathFname_Wild = 'C:\Users\a201605*.jpg'  일때

  vPath  :=  ExtractFilePath(aPathFname_Wild);  //  'C:\Users\'
  vfname :=  ExtractFileName(aPathFname_Wild);  //  'a201605*.jpg'

  vFind := FindFirst(vPath + vfname, faAnyFile, vSearchRec);


  while vFind = 0 do
  begin
    DeleteFile(vPath + vSearchRec.Name);
    vFind := SysUtils.FindNext(vSearchRec);
  end;


  FindClose(vSearchRec);

end;



참고) http://niceit.tistory.com/137