Ordner rekursive auslesen

  • VBScript

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von petaod.

    Ordner rekursive auslesen

    Hallo Leute,

    ich habe schon ein Skript der soweit Funktioniert es muss jetzt so geändert werden, das man damit auch rekursive Ordner Strukturen auslesen kann.
    Momentan ließt und kopiert das Skript mir nur aus der ersten Eben die Dateien(mit jeweils Ordnername) raus. Ich möchte aber dass das Skript alle unter Ordner durchsucht und die Dateien mit jeweiligen Ordnernamen ins Ziel kopiert.

    Hier ein Beispiel, was es auslegen soll.
    Ordner1
    Unterordner1
    Unterordner2
    Unterordner3
    Unterordner4
    File1
    Ornder2

    Ein kopierte Datei würde dann so heißen:
    Ordner1_Unterorder1_Unterordner2_Unterordner3_Unterordner4_File.pdf

    Ich hoffe das mir jemand schnell weiter helfen kann. Ich muss ca. 32t Ordner so kopieren, damit die Dateien verarbeitet werden können.
    Danke im Voraus.
    .....



    Visual Basic-Quellcode

    1. Dim objSendMail
    2. Dim searchfolder
    3. Dim Filedate
    4. Dim BasicShare
    5. Dim DokFolder
    6. Dim ResultFolder
    7. Dim SourceShare
    8. Dim NumberOfFiles
    9. Dim ConfigPfad
    10. Dim ConfigFile
    11. Dim briXSQL
    12. Dim FSO1
    13. SourceShare ="N:"'
    14. BasicShare = "C:\Test"
    15. ResultFolder = BasicShare & "\Result"
    16. Set FSO1 = Wscript.CreateObject("scripting.FileSystemObject")
    17. Set LogFile = FSO1.OpenTextFile(BasicShare & "" & CreateLogFileName(now()) & ".txt", 8, True)
    18. LogFile.WriteLine("""Nummer"",""Dateiname""")
    19. LogFile.close
    20. counter = 1
    21. If FSO1.FolderExists(SourceShare) then
    22. Dim myfolder1, myfolderset
    23. Set myfolder1 = FSO1.GetFolder(SourceShare)
    24. Set myfolderset = myfolder1.Subfolders
    25. For Each fl in myfolderset
    26. ReorgFiles(fl.Name)
    27. Next
    28. End If
    29. Wscript.Echo "Fertig"
    30. Function ReorgFiles(subfolder)
    31. Dim FSO, myfolder, myfileset, LogFile, searchfolder
    32. searchfolder = SourceShare & "" & subfolder
    33. Dim FileList
    34. Dim counter
    35. FileList = ""
    36. Set FSO = Wscript.CreateObject("scripting.FileSystemObject")
    37. Set LogFile = FSO.OpenTextFile(BasicShare & "" & CreateLogFileName(now()) & ".txt", 8, True)
    38. If FSO.FolderExists(searchfolder) then
    39. Set myfolder = FSO.GetFolder(searchfolder)
    40. Set myfileset = myfolder.Files
    41. For Each fl in myfileset
    42. If (LCase(right(fl.Name,3)) = "pdf" Or LCase(right(fl.Name,3)) = "tif") Then
    43. FSO.CopyFile searchfolder & "" & fl.Name, ResultFolder & subfolder & "_" & fl.Name
    44. LogFile.WriteLine(counter & ",""" & fl.Name & """")
    45. counter = counter + 1
    46. End If
    47. Next
    48. End If
    49. ReorgFiles = counter
    50. Set FSO = Nothing
    51. End Function
    52. Function CreateLogFileName(Logfiledate)
    53. CreateLogFileName = year(Logfiledate) & checkFormat(month(Logfiledate)) & checkFormat(day(Logfiledate))
    54. End Function
    55. Function checkFormat(datenumber)
    56. If len(datenumber) < 2 Then
    57. checkFormat = "0" & datenumber
    58. Else
    59. checkFormat = datenumber
    60. End If
    61. End Function


    Thx
    zero1de

    *Topic verschoben*

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „zero1de“ ()

    Erstmal willkommen im Forum B)

    Wäre nett das du deinen Code noch anständig mit VB-Tags formatieren könntest, sieht sehr übersichtlich aus und ich behalte da den Überblick nicht ;)

    [01 Forum] Bitte VB-Tag(s) benutzen - was ist damit gemeint? Oder: Wie füge ich Quellcode korrekt im Forum ein?
    Software being "Done" is like lawn being "Mowed". (Jim Benson)

    zero1de schrieb:

    Aber ich kann damit nichts anfangen.
    Was verstehst du an dem Code nicht?
    Dass die Files nicht behandelt werden?
    Das geht genauso einfach.
    Versuch das FileSystemObject zu verstehen, dann ist alles klar.

    Visual Basic-Quellcode

    1. Set FSO=CreateObject("Scripting.FileSystemObject")
    2. BaseFolder="c:\Base/" '/ durch Backslash ersetzen
    3. DestinationDirectory="d:\Backup/" '/ durch Backslash ersetzen
    4. ExecuteFolder BaseFolder
    5. Sub ExecuteFolder (Foldername)
    6. Set Folder=FSO.GetFolder(Foldername)
    7. For Each File In Folder.Files
    8. File.Copy DestinationDirectory & Replace(Replace(File.Path,BaseFolder,""), "/", "_") '/ durch Backslash ersetzen
    9. Next
    10. For Each SubFolder in Folder.SubFolders
    11. ExecuteFolder SubFolder.Path
    12. Next
    13. End Sub
    Irgendwie spielt mir die Forumsoftware einen Streich.
    Ersetze die Slashes durch Backslashes.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „petaod“ ()