Inhalt eines Verzeichnis in eine *.txt Datei speichern

26toto26

Mitglied
Hallo an alle,

ich möchte den Inhalt eines Verzeichnises inkl. der Unterverzeichnise in eine txt-Datei speichern. Wie ich diese erstelle habe ich schon gelernt :)

Diese sollte wenn möglich so aufgebaut sein:

c:\ordner1\bild1.jpg
c:\ordner1\bild2.jpg
c:\ordner1\bild3.jpg usw.
c:\ordner1\unterordner2\bild1.jpg
c:\ordner1\unterordner2\bild2.jpg
c:\ordner1\unterordner2\bild3.jpg usw.
c:\ordner1\unterordner2\unterordner3\bild1.jpg
c:\ordner1\unterordner2\unterordner3\bild2.jpg
c:\ordner1\unterordner2\unterordner3\bild3.jpg usw.

Die Daten kann ich ja in einen Array speichern und dann in die txt-Datei einfügen lassen

Danke für jeden Tipp

Gruß
Toto
 
Hallo, versuch´s mal so:
Code:
' Verweis auf Microsoft Scripting Runtime nicht vergessen!

Private oFSO As New FileSystemObject
Private cText As String

Private Sub Command1_Click()
Dim Nr As Integer
  
  GetFolder "C:\DeinOrdner"
  
  Nr = FreeFile
  Open "D:\Liste.txt" For Output As #Nr
    Print #Nr, cText;
  Close #Nr
  
  MsgBox "Fertig"
End Sub

Private Function GetFolder(ByVal sFolder As String)
Dim oFile As File

  On Error Resume Next
 
  Set oFolder = oFSO.GetFolder(sFolder)
  Set oSubFldColl = oFolder.SubFolders
  
  If oSubFldColl.Count <> 0 Then
    For Each oSubFld In oSubFldColl
      sSubFldPath = sFolder & oSubFld.Name & "\"
      For Each oFile In oSubFld.Files
        cText = cText & oFile & vbCrLf
      Next
      GetFolder sSubFldPath
    Next
  End If

  Set oFolder = Nothing
  On Error GoTo 0
End Function
 
Hallo Wincnc,

funktioniert soweit super gut, nur habe ich zwei kleine Probleme noch:

1. Das Verzeichnis was ich im
Code:
GetFolder "C:\DeinOrdner"
eingegeben habe wird nicht nach Dateien dursucht. sondern nur die Dateien die im ersten Unterverzeichnis stehen.
Also im prinzip so:
c:\bilder -> keine Dateien die in diesen Verzeichnis sind werden in die Datei geschrieben
c:\bilder\party1 -> alle Dateien werden in die Datei "Liste.txt" aufgeführt
c:\bilder\party1\sonstige -> keine Dateien die in diesen Verzeichnis sind werden in die Datei geschrieben

2. Ich möchte ja nur die Dateien die mit "jpg" enden in der Auflistung haben.

Hat da jemand noch einen Tipp? Wäre super gut

Danke und Gruß
Torsten
 
Hallo

Hast recht, da waren noch einige Fehler drin.
Einen hab ich noch mit Filter:
Code:
Private myText As String
Private CancelSearch As Boolean

Private Sub Command1_Click()
Dim Nr As Integer

  CancelSearch = False
  
  SubDirFind "C:\Programme", "*.jpg"
  
  Nr = FreeFile
  Open "D:\Liste.txt" For Output As #Nr
    Print #Nr, myText;
  Close #Nr
  
  MsgBox "Fertig"
End Sub

Private Sub Command2_Click()
  CancelSearch = True
End Sub

Private Sub SubDirFind(ByVal CurDirPath As String, Optional ByVal myFilter As String = "*.*")
Dim DirsFound() As String
Dim myDir As String
Dim myFile As String
Dim N As Integer

If (Right(CurDirPath, 1) <> "\") Then
  CurDirPath = CurDirPath & "\"
End If

On Error Resume Next

myFile = Dir(CurDirPath & MyFilter, vbNormal)

Do While (myFile <> "")
  DoEvents
  myText = myText & CurDirPath & myFile & vbCrLf
  myFile = Dir()
  If CancelSearch = True Then
        Exit Sub
  End If
Loop

myDir = Dir(CurDirPath, vbDirectory)
ReDim DirsFound(0)

Do While (myDir <> "")
  DoEvents
  If (myDir <> ".") And (myDir <> "..") Then
    If (GetAttr(CurDirPath & myDir) And vbDirectory) Then
      ReDim Preserve DirsFound(UBound(DirsFound) + 1)
      DirsFound(UBound(DirsFound)) = CurDirPath & myDir
    End If
  End If
  myDir = Dir()
  If CancelSearch = True Then
    Exit Sub
  End If
Loop

If UBound(DirsFound) > 0 Then
  For N = 1 To UBound(DirsFound)
    DoEvents
    SubDirFind DirsFound(N), myFilter
  Next
End If

On Error GoTo 0

End Sub
 

Neue Beiträge

Zurück