디렉토리 vb6 내의 모든 파일을 삭제하십시오
-
13-09-2019 - |
문제
디렉토리 내의 모든 파일을 삭제하는 VB6 함수 (하위 디렉터 제외)를 삭제하는 VB6 기능을 도와 줄 수 있는지 궁금합니다.
해결책
VB6 문을 사용하여 한 줄 죽이다
Kill "c:\doomed_dir\*.*"
그만큼 도움말 주제는 말합니다 "Microsoft Windows에서 Kill은 다중 문자 (*) 및 단일 문자 (?) 와일드 카드의 사용을 지원하여 여러 파일을 지정합니다."
따로 - 나는 Microsoft 스크립팅 런타임 (FileSystemObject 포함)을 피하는 것을 선호합니다. 내 경험상 그것은 가끔 사용자 컴퓨터에서 깨지기 때문에 IT 부서는 바이러스에 대한 편집증이기 때문일 것입니다.
다른 팁
나는 이것이 효과가 있다고 생각한다 :
Dim oFs As New FileSystemObject
Dim oFolder As Folder
Dim oFile As File
If oFs.FolderExists(FolderSpec) Then
Set oFolder = oFs.GetFolder(FolderSpec)
'caution!
On Error Resume Next
For Each oFile In oFolder.Files
oFile.Delete True 'setting force to true will delete a read-only file
Next
DeleteAllFiles = oFolder.Files.Count = 0
End If
End Function
모든 시나리오를 테스트하지는 않았지만 작동해야합니다. 모든 파일을 삭제해야하며 파일이 잠겨 있거나 액세스 할 수없는 경우 잡힌 오류 70을 가져 와서 중단, 재 시도 또는 무시해야합니다.
Sub DeleteAllFilesInDir(ByVal pathName As String)
On Error GoTo errorHandler
Dim fileName As String
If Len(pathName) > 0 Then
If Right(pathName, 1) <> "\" Then pathName = pathName & "\"
End If
fileName = Dir(pathName & "*")
While Len(fileName) > 0
Kill pathName & fileName
fileName = Dir()
Wend
Exit Sub
errorHandler:
If Err.Number = 70 Then
Select Case MsgBox("Could not delete " & fileName & ". Permission denied. File may be open by another user or otherwise locked.", vbAbortRetryIgnore, "Unable to Delete File")
Case vbAbort:
Exit Sub
Case vbIgnore:
Resume Next
Case vbRetry:
Resume
End Select
Else
MsgBox "Error deleting file " & fileName & ".", vbOKOnly Or vbCritical, "Error Deleting File"
End If
End Sub
스크립팅 런타임 FileSystemObject의 DeleteFile 메소드도 와일드 카드를 지원하는 것 같습니다.
Dim fs As New Scripting.FileSystemObject
fs.Deletefile "C:\Temp\*.jpg", true
이 접근법은 @corazu가 제안한 접근법보다 제어력이 적지 만 특정한 경우에는 약간의 유용성이있을 수 있습니다.
제휴하지 않습니다 StackOverflow