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!
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 132069
Url: https://administrator.de/contentid/132069
Ausgedruckt am: 19.11.2024 um 23:11 Uhr
2 Kommentare
Neuester Kommentar
Hallo Itfreak!
Abgesehen davon, dass ich nur eine Schleife und darin ein "
Am Ende hast Du dann in der Variablen "
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 "
<code type=plain">If LCase(objFile.Extension) = "pdf" Then
Grüße
bastla
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
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
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
Denn die Info brauchst du doch eh...
Grüße
Biber
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