itfreak
Goto Top

Mit VB Script Datei Extension auslesen?

Moin Moin

Ich sollte ein Script schreiben das mir alle Dateinamen in einem Windows Share und Datei Extensions
in meinem txt file ausgibt.
Die Dateinamen kann ich ohne probleme von Share und allen Unterordnern auslesen, aber das mit den
File Extensions bekomme ich nicht hin.
Ich müsste nur die Datei Extension haben und die Anzahl vorhandener Dateien. z.B ( pdf 44)
Habe mein Scipt auch gleich mit gepostet.
Danke im voraus für eure Hilfe!

strComputer = "."  

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")  

strFolderName = "C:\Test"  

Set objFSO = CreateObject("Scripting.FileSystemObject")  
Set objTextFile = objFSO.CreateTextFile("C:\Test.txt")  

Set colSubfolders = objWMIService.ExecQuery _
    ("Associators of {Win32_Directory.Name='" & strFolderName & "'} " _  
        & "Where AssocClass = Win32_Subdirectory " _  
            & "ResultRole = PartComponent")  

Set colFiles = objWMIService.ExecQuery _
    ("ASSOCIATORS OF {Win32_Directory.Name='" & strFolderName & "'} Where " _  
        & "ResultClass = CIM_DataFile")  

For Each objFile in colFiles
    If objFile.Extension = "pdf" Then  
        objTextFile.WriteLine objFile.name
    End If
Next

For Each objFile in colFiles
    If objFile.Extension = "doc" Then  
        objTextFile.WriteLine objFile.name
    End If
Next


For Each objFile in colFiles
    If objFile.Extension = "docx" Then  
        objTextFile.WriteLine objFile.name
    End If
Next


For Each objFile in colFiles
    If objFile.Extension = "ppt" Then  
        objTextFile.WriteLine objFile.name
    End If
Next


For Each objFile in colFiles
    If objFile.Extension = "xls" Then  
        objTextFile.WriteLine objFile.name
    End If
Next


For Each objFile in colFiles
    If objFile.Extension = "xlsx" Then  
        objTextFile.WriteLine objFile.name
    End If
Next


For Each objFile in colFiles
    If objFile.Extension = "vsd" Then  
        objTextFile.WriteLine objFile.name
    End If
Next


For Each objFile in colFiles
    If objFile.Extension = "txt" Then  
        objTextFile.WriteLine objFile.name
    End If
Next


For Each objFolder in colSubfolders
    GetSubFolders strFolderName
Next

Sub GetSubFolders(strFolderName)

    Set colSubfolders2 = objWMIService.ExecQuery _
        ("Associators of {Win32_Directory.Name='" & strFolderName & "'} " _  
            & "Where AssocClass = Win32_Subdirectory " _  
                & "ResultRole = PartComponent")  

    For Each objFolder2 in colSubfolders2
        strFolderName = objFolder2.Name

    Set colFiles = objWMIService.ExecQuery _
        ("ASSOCIATORS OF {Win32_Directory.Name='" & strFolderName & "'} Where " _  
            & "ResultClass = CIM_DataFile")  

 For Each objFile in colFiles
    If objFile.Extension = "pdf" Then  
        objTextFile.WriteLine objFile.name
    End If
Next

For Each objFile in colFiles
    If objFile.Extension = "doc" Then  
        objTextFile.WriteLine objFile.name
    End If
Next


For Each objFile in colFiles
    If objFile.Extension = "docx" Then  
        objTextFile.WriteLine objFile.name
    End If
Next


For Each objFile in colFiles
    If objFile.Extension = "ppt" Then  
        objTextFile.WriteLine objFile.name
    End If
Next


For Each objFile in colFiles
    If objFile.Extension = "xls" Then  
        objTextFile.WriteLine objFile.name
    End If
Next


For Each objFile in colFiles
    If objFile.Extension = "xlsx" Then  
        objTextFile.WriteLine objFile.name
    End If
Next


For Each objFile in colFiles
    If objFile.Extension = "vsd" Then  
        objTextFile.WriteLine objFile.name
    End If
Next


For Each objFile in colFiles
    If objFile.Extension = "txt" Then  
        objTextFile.WriteLine objFile.name
    End If
Next



        GetSubFolders strFolderName
    Next
End Sub

Content-Key: 132069

Url: https://administrator.de/contentid/132069

Printed on: April 24, 2024 at 05:04 o'clock

Member: bastla
bastla Dec 21, 2009 at 10:43:39 (UTC)
Goto Top
Hallo Itfreak!

Abgesehen davon, dass ich nur eine Schleife und darin ein "Select Case" zur Unterscheidung der Dateinamen verwenden würde, sollte es genügen, jeweils einen Zähler mitzuführen - also etwa als Zeile 21a:
NoPDF = NoPDF + 1
Am Ende hast Du dann in der Variablen "NoPDF" die Anzahl der gefundenen PDF-Dateien.

Noch eine Anmerkung: Falls in Deinem Ergebnis weniger Dateien als erwartet enthalten sein sollten, könnte der Grund darin liegen, dass Du nur Extensions in Kleinbuchstaben überprüfst - "Wichtig.PDF" würde damit gar nicht gefunden werden. Abhilfe könnte zB die Verwendung von "LCase()" schaffen, also etwa:
<code type=plain">If LCase(objFile.Extension) = "pdf" Then


Grüße
bastla
Member: Biber
Biber Dec 21, 2009 at 11:37:13 (UTC)
Goto Top
Moin itfreak,

ergänzend zu bastlas Anmerkungen:

Soweit ich den Sinn und Zweck deines Schnipsels verstehe wäre es eventuell zu überlegen, statt File.Extension in UCASE() oder lower() doch gleich den "File.Type" auszuwerten. der wäre ja bei .PDF so etwas wie die usgabezeile von Assoc
>assoc .pdf
.pdf=AcroExch.Document

Denn die Info brauchst du doch eh...

Grüße
Biber