안녕하세요, Scripting Guy! - 임시 인터넷 파일 폴더에서 파일을 삭제하려면 어떻게 해야 하나요?


새로운 TechNet 칼럼에 오신 것을 환영합니다. 이 칼럼에서는 Microsoft Scripting Guy가 시스템 관리 스크립팅과 관련하여 자주 물어보는 질문에 대한 답변을 드립니다. 시스템 관리 스크립팅에 대해 궁금한 내용이 있으십니까? 그렇다면scripter@microsoft.com으로 전자 메일을 보내십시오. 모든 질문을 다룰 수는 없지만 최선을 다해 답변을 드리겠습니다.

오늘의 질문: 임시 인터넷 파일 폴더에서 파일을 삭제하려면 어떻게 해야 하나요?


임시 인터넷 파일 폴더에서 파일을 삭제하려면 어떻게 해야 하나요?

Q 안녕하세요, Scripting Guy! 스크립트를 사용하여 임시 인터넷 파일 폴더의 모든 파일을 삭제하는 방법이 있습니까?

-- KR
A
안녕하세요, AK님. Scripting Guy 중 한 사람이 이러한 질문을 받고 “내 임시 인터넷 파일 폴더에는 무엇이 있을까?”라는 생각을 했습니다. 그래서 확인해 본 결과, 마치 하드 디스크에 전체 인터넷이 저장되었다 해도 과장이 아닐 정도로 이 폴더에는 239메가바이트의 불필요한 내용이 들어 있었습니다.

이처럼 임시 인터넷 파일 폴더의 모든 파일을 삭제하는 스크립트를 작성하는 것은 필요한 작업입니다.

이 작업에서 한 가지 복잡한 요소는 사용자의 임시 인터넷 파일 폴더가 저장된 위치를 확인하는 것입니다. 일반적으로 이 폴더는 C:\Documents and Settings\kenmyer\Local Settings\Temporary Internet Files와 같이 사용자의 로컬 사용자 프로필에서 찾을 수 있습니다. 그러나 폴더가 항상 이 위치에 있는 것은 아닙니다. 예를 들어, Windows가 드라이브 C에 설치되어 있지 않을 수도 있습니다. 이러한 경우 스크립트 작성의 핵심은 임시 인터넷 파일 폴더를 찾는 데 있으며 일단 이 폴더를 찾고 난 후에 파일을 삭제하는 작업은 매우 간단합니다.

그렇다면 이 폴더를 어떻게 찾을 수 있을까요? 임시 인터넷 파일 폴더는 "특별한" 폴더로서 Windows를 설치하면 기본적으로 생성됩니다. 또한 운영 체제에서 이 폴더를 계속해서 인식하고 있으므로 이 폴더에 어떤 작업을 수행하더라도 Windows는 이 폴더의 위치를 알고 있습니다. 따라서 실제 위치와 무관하게 특별한 폴더를 찾을 수 있는 Shell 개체를 사용하여 임시 인터넷 파일의 경로를 파악한 다음 이 경로를 통해 해당 폴더와 연결하여 폴더에 있는 모든 파일을 삭제할 수 있습니다.

주의 사항: Shell 개체는 원격으로 만들 수 없습니다. 따라서 이 스크립트를 로그온 또는 로그오프 스크립트로 실행하거나 이 스크립트를 원격 컴퓨터에 복사한 후 WMI Win32_Process 클래스를 사용하여 해당 원격 시스템에서 시작합니다. 자세한 내용은 Win32_Process를 사용해 원격 컴퓨터에서 md 명령을 실행하는 방법을 설명한 안녕하세요, Scripting Guy!  칼럼을 참고하십시오.

아래 스크립트를 살펴봅시다.
Const TEMPORARY_INTERNET_FILES = &H20&
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(TEMPORARY_INTERNET_FILES)
Set objFolderItem = objFolder.Self
strPath = objFolderItem.Path & "\*.*"
Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.DeleteFile(strPath)

어떻습니까? 이 많은 코드를 보고 매우 복잡하다는 생각이 들 것입니다. 먼저 상수 TEMPORARY_INTERNET_FILES를 임시 인터넷 파일 폴더에 연결하는 데 필요한 값인 &H20&로 설정합니다(분당 그 이상 필요). 그런 다음 Shell 개체를 만들고 Namespace 메서드를 사용하여 이 폴더를 찾습니다. Shell 개체의 고유 특성 때문에 Self 메서드를 호출하여 이 폴더에 실제로 연결합니다. 이와 관련된 코드 줄은 다음과 같습니다.

Set objFolderItem = objFolder.Self

이때 확인하려는 이 폴더의 실제 경로(예: C:\Documents and Settings\kenmyer\Local Settings\Temporary Internet Files)를 알 수 있습니다. 폴더 경로를 확인하려는 경우 다음과 비슷한 코드 줄을 사용하면 됩니다.

Wscript.Echo objFolderItem.Path

그러나 FileSystemObject를 사용해 이 폴더의 모든 파일을 삭제할 수도 있습니다. 이렇게 하려면 이 폴더의 모든 파일을 나타내는 표준 와일드카드 문자를 사용하여 다음과 비슷한 경로로 FileSystemObject를 전달해야 합니다.

C:\Documents and Settings\kenmyer\Local Settings\Temporary Internet Files\*.*

그리고 나서 다음 코드 줄을 사용하여 해당 경로를 구축합니다.

strPath = objFolderItem.Path & "\*.*"

Shell 개체에 의해 경로가 반환되면 \*.*를 추가합니다. 결과적으로 이 폴더의 모든 파일을 삭제하도록 FileSystemObject에 알려 주는 명령이 작성됩니다.

코드의 마지막 두 줄에서는 FileSystemObject의 인스턴스를 만든 다음 DeleteFile 메서드를 사용해 모든 파일을 삭제합니다. 그러면 임시 인터넷 파일 폴더가 깨끗하게 비워집니다.

물론 인터넷 쿠키 폴더도 정리할 수 있습니다. 다음은 이 작업을 수행하는 스크립트입니다.

Const COOKIES = &H21&
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(COOKIES)
Set objFolderItem = objFolder.Self
strPath = objFolderItem.Path & "\*.*"
Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.DeleteFile(strPath)

멋진 스크립트죠?

이 칼럼을 게시하면서 "내 그림 폴더에 어떻게 연결하나요?" 또는 "내 최근 문서 폴더에 연결하는 방법이 있나요?”와 같은 질문을 받게 될 것이라는 생각이 들었습니다. 따라서 스크립트 센터 스크립트 리포지토리  에 38개의 새 스크립트를 추가하였습니다. 이 스크립트는 Shell 개체를 사용해 액세스할 수 있는 특별한 폴더 각각에 연결하는 방법을 보여줍니다. 도움이 되시길 바랍니다!


자세한 정보

자세한 내용은 안녕하세요, Scripting Guy! - Archive  를 참조하십시오.

페이지 맨 위로 페이지 맨 위로

최종수정일 : 2005년 6월 22일