質問

誰もが(サブディレクトリを除く)は、ディレクトリ内のすべてのファイルを削除しますVB6の機能で私を助けることができる場合は、

私は思っていた。

役に立ちましたか?

解決

VB6声明キル一行、 >

Kill "c:\doomed_dir\*.*"

ヘルプトピックはの「マイクロソフトで言いますWindowsは、キル「は、複数のファイルを指定するための複数文字(*)および単一文字(?)のワイルドカードの使用をサポートしています。

余談として - 私は(FileSystemObjectオブジェクトを含む)は、Microsoftスクリプトランタイムを避けることを好みます。私の経験では、時折、彼らの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

私の作品などのスクリプト実行時のファイルシステムオブジェクトのDeleteFileをメソッドは、ワイルドカードをサポートしていることと思われます

Dim fs As New Scripting.FileSystemObject
fs.Deletefile "C:\Temp\*.jpg", true

このアプローチは@Corazuによって示唆アプローチよりも少ない制御を有するが、特定のケースでは、いくつかの有用性を有していてもよい。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top