Dateien eines Verzeichnisses in eine Textdatei ausgeben

  • VBScript

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von mac21.

    Dateien eines Verzeichnisses in eine Textdatei ausgeben

    Hallo VB-Freunde ;)
    zu aller erst mein problem:
    ich möchte ein script, dass mir alle Dateien der Unterordner in eine txt speichert.
    ich HABE die SuFU und Gidf.de genutzt, jedoch komme ich nicht auf DIE lösung, die ich benötige.

    Ich fand:

    Quellcode

    1. 'ListAllFilesAndFolders2TextFile.vbs
    2. Set fso = CreateObject("Scripting.FilesystemObject")
    3. Set Liste = fso.OpenTextFile("Liste.txt", 2, True)
    4. SkriptPfad = WScript.ScriptFullNameSkriptPfad = Left(SkriptPfad, Len(SkriptPfad) - Len(WScript.ScriptName))
    5. DoFolders fso.GetFolder(skriptPfad)
    6. Liste.Close
    7. WScript.Echo "Fertig."
    8. Sub DoFolders(Folder)
    9. If LCase(Folder.Name) <> LCase("System Volume Information") Then
    10. For Each File In Folder.Files
    11. Liste.WriteLine File.Path
    12. Next
    13. For Each SubFolder In Folder.SubFolders
    14. Liste.WriteLine SubFolder.Path
    15. DoFolders(SubFolder)
    16. Next
    17. End If
    18. End Sub



    Funktioniert auch super, jedoch:
    - in der txt-datei sollen die Dateien des AKTUELLEN verzeichnisses NICHT angezeigt werden, NUR die dateien in unterordnern (mit absolutem oder relativen pfad, egal)
    - die namen der UNTERORDER sollen auch nicht angezeigt werden.

    beispiel:

    +root (ebene in der mein script liegt)
    listeErstellen.vbs
    datei1
    datei 2

    - Unterordner 1 (1 ebene unter root)
    unterdatei 1.1

    - Unterordner 2 (1 ebene unter root)
    unterdatei 2.1
    unterdatei 2.2

    - UnterUnterordner 3 (2 ebene unter root)
    unterunterdatei 3.1
    unterunterdatei 3.2


    In der Ausgabe sollen NUR
    "pfad/unterdatei 1.1
    pfad/unterdatei 2.1
    pfad/unterdatei 2.2
    pfad/unterunterdatei 3.1
    pfad/unterunterdatei 3.2"


    stehen.
    Ich selbst bin leider ein absoluter VB-Noob, entwickle nur in Java.
    Der Logik-Ansatz ist derselbe wie bei Java.

    mac21 schrieb:

    in der txt-datei sollen die Dateien des AKTUELLEN verzeichnisses NICHT angezeigt werden
    Gib dem DoFolders einen Parameter ShowFiles, den du nur beim rekursiven Aufruf auf True setzt.

    mac21 schrieb:

    die namen der UNTERORDER sollen auch nicht angezeigt werden.
    Dann lass doch die Ausgabe dafür weg

    Visual Basic-Quellcode

    1. Liste.WriteLine SubFolder.Path
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    danke für die super antwort :)

    in der zwischenzeit habe ich aus verzweiflung einen ordner "programme" angelegt, in dem andere unterordner und unterdateien liegen

    listeErzeugen.vbs sieht so aus

    Quellcode

    1. Set fso = CreateObject("Scripting.FilesystemObject")
    2. Set Liste = fso.OpenTextFile("Liste.txt", 2, True)
    3. scriptname = Wscript.ScriptFullName scriptpath = fso.getparentfoldername(scriptname)
    4. SkriptPfad = WScript.ScriptFullNameSkriptPfad = Left(SkriptPfad, Len(SkriptPfad) - Len(WScript.ScriptName))skriptPfad = skriptPfad & "\Programme"DoFolders fso.GetFolder(skriptPfad)
    5. Liste.Close
    6. Sub DoFolders(Folder)
    7. If LCase(Folder.Name) <> LCase("System Volume Information") Then
    8. For Each File In Folder.Files
    9. Liste.WriteLine File.Path Next
    10. For Each SubFolder In Folder.SubFolders
    11. DoFolders(SubFolder)
    12. Next
    13. End If
    14. End Sub



    Das einzige problem: leider benötige ich nun DOCH ein spezifisches format..
    Beispiel: in liste.tex steht nun:

    Quellcode

    1. C:\ordner1\ordner2\ORDNER3\Programme\7-zip\32bit\7z920-x86.exe



    da das vbs-file selsbt in ORDNER3 liegt, benötige ich in der textdatei nurnoch

    Quellcode

    1. Programme\7-zip\32bit\7z920-x86.exe



    wie "schneide" ich den vorherigen rest ab?
    ich habe schon gegoogelt und codes gefunden, nur will ich es ja verstehen und nicht nur kopieren..