상세 컨텐츠

본문 제목

와일드 카드(*, ?)를 사용하여 여러 파일을 삭제하는 방법

프로그래밍/JAVA

by 라제폰 2009. 1. 23. 17:03

본문

와일드 카드(*, ?)를 사용하여 여러 파일을 삭제하는 방법

 저자: Daniel Joe |  날짜: 2002년 02월 25일  


ASP에서 FSO를 이용하여 파일을 삭제할 때 와일드 카드를 사용하면 같은 종류의 확장자를 가진 파일을 동시에 삭제할 수 있다. 예를 들어 다음과 같이 확장자가 .bak인 모든 파일을 삭제할 수 있을 것이다.

objFSO.DeleteFile("C:\inetpub\wwwroot\*.bak")

아직 FSO에 대해 잘 모르는 사람들은 다음 글을 먼저 읽기 바란다.

물론 모든 파일을 의미하는 * 외에 글자 하나를 대신하는 ?를 사용하는 것 역시 가능하다.

objFSO.DeleteFile("C:\inetpub\wwwroot\autoexec?.bat")

만일 특정 파일을 삭제하고자 할 때 해당 파일이 존재하지 않으면 에러가 발생하므로 DeleteFile 코드 작성시 On Error Resume Next 문을 삽입해주는 것이 바람직하다.

이번엔 여러 확장자 파일을 동시에 삭제하는 방법에 대해 알아보도록 하자. 이것 역시 와일드 카드를 사용하되 여러 확장자 파일을 동시에 삭제해야 하므로 반복문을 돌며 DeleteFile을 사용하면 될 것이다. 이를 위해 간단한 함수를 만들면 다음과 같다.

Sub DeleteMultipleFiles(strWildcards, strDirectory)
  '에러 발생시 통과
  On Error Resume Next
 
  'FSO 객체 생성
  Dim objFSO
  Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
 
  '와일드 카드 분리하여 배열에 저장
  Dim arrExtensions
  arrExtensions = split(strWildcards, ",")
 
  Dim i
  For i = LBound(arrExtensions) to UBound(arrExtensions)
    '파일 삭제
    objFSO.DeleteFile(strDirectory & arrExtensions(i))
  Next
End Sub

위 함수를 사용하는 방법은 다음과 같다.

Dim strWildcards, strDirectory
strDirectory = "C:\inetpub\wwwroot\"
strWildcardsToDelete = "*.txt,*.bak"
 
DeleteMultipleFiles strWildcards, strDirectory

split 함수에 대해 잘 모르는 사람은 다음 글을 참조하기 바란다.


관련글 더보기