tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
3
ZUGRIFFE
853
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    KlaDi KlaDi ist offline Mitglied Brokat
    Registriert seit
    Aug 2006
    Ort
    Europe - Germany - Mainz
    Beiträge
    296
    Hallo,

    ich habe ein kleines Skript geschrieben, das mir alle Ordner inklusive Pfad mit mehr als 256 Zeichen auflisten soll. Eigentlich sollte das ja von Windows von vornerein unterbunden werden, aber die Praxis zeigt, man schafft es doch immer wieder.
    Also mein Skript soll ein Netzlaufwerk scannen und alle Ordner inklusive Pfad auflisten, die mehr als 256 Zeichen haben.
    Hier mal mein Code:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    
    Option Explicit
        Dim Pfad
            Pfad = "Q:\"
        Dim File
        Dim fso
            Set fso = CreateObject("Scripting.FileSystemObject") 
        
        Dim Folder
            Set Folder = fso.GetFolder(Pfad)
        findFiles Folder
    WScript.Quit
     
    Sub findFiles(Strfolder) 
        Dim fso
            Set fso = WScript.CreateObject("Scripting.FileSystemObject")
        Dim Folder
            Set Folder = fso.GetFolder(StrFolder) 
        Dim SubFolder
        
        For Each SubFolder in folder.SubFolders
            findFiles SubFolder
            addtoFile "Länge: " & SubFolder & " " & SubFolder & "<br>", "C:\over256.htm" 
        Next
    End Sub
     
    Function addtoFile (ByRef inhaltLog, ByRef clientname)
        SET fso = CreateObject ("Scripting.FileSystemObject")
        DIM clientlog
            SET clientlog = fso.OpenTextFile (clientname,8,TRUE)
        
        'Logdatei schreiben:
        clientlog.Writeline inhaltLog
            
        clientlog.close
    End Function

    Mein Problem ist, das mein Skript in dieser Zeile einen Fehler erzeugt, wenn der Ordner inklusive Pfad mehr als 256 Zeichen hat:
    Code :
    1
    
    For Each SubFolder in folder.SubFolders
    gruß klaus.
     

  2. #2
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.169
    Hi.

    Man kann das Limit umgehen, indem man den Pfad mit \\?\ beginnt:
    Code :
    1
    
    Pfad = "\\?\Q:\"

    Gruß

    PS: Es ist übrigens unnötig jedesmal in der findFiles Prozedur ein neues FilesystemObject zu erstellen. Die GetFolder Methode liefert keinen String, sondern ein Folder Objekt!
    Geändert von deepthroat (24.02.09 um 16:30 Uhr)
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  3. #3
    KlaDi KlaDi ist offline Mitglied Brokat
    Registriert seit
    Aug 2006
    Ort
    Europe - Germany - Mainz
    Beiträge
    296
    Hi deepthroat,

    funktioniert wunderbar.

    Vielen Dank!

    gruß klaus.

    PS: Dann müsste ich das FilesystemObject aber als globale Variable definieren!?
     

  4. #4
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.169
    Morgen!
    Zitat Zitat von KlaDi Beitrag anzeigen
    PS: Dann müsste ich das FilesystemObject aber als globale Variable definieren!?
    Das FilesystemObject brauchst du doch in der findFiles Prozedur gar nicht. Du übergibst doch schon ein Folder Objekt (von daher ist der Name strFolder sehr irreführend, weil es sich nicht um einen String handelt).
    Code vb:
    1
    2
    3
    4
    5
    6
    7
    8
    
    Sub findFiles(folder) 
        Dim SubFolder
        
        For Each SubFolder in folder.SubFolders
            findFiles SubFolder
            addtoFile "Länge: " & SubFolder & " " & SubFolder & "<br>", "C:\over256.htm" 
        Next
    End Sub
    Gruß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

Ähnliche Themen

  1. Antworten: 1
    Letzter Beitrag: 19.09.10, 23:06
  2. Zeichen fremder Sprachen finden?
    Von supersalzi im Forum Relationale Datenbanksysteme
    Antworten: 0
    Letzter Beitrag: 09.08.08, 19:04
  3. nummerisches Zeichen in string finden
    Von Bamboocha_10 im Forum Visual Basic 6.0
    Antworten: 2
    Letzter Beitrag: 30.10.07, 16:54
  4. Ordner Suchen und Finden
    Von liquidbeats im Forum Linux & Unix
    Antworten: 2
    Letzter Beitrag: 10.08.07, 11:13
  5. über preg_match Zeichen finden
    Von low-group im Forum PHP
    Antworten: 2
    Letzter Beitrag: 21.05.04, 17:09

Stichworte