VBS: Erlaubnis verweigert in For-Next-Schleife
Hallo Gemeinde,
wieder stehe ich vor einem Problemchen.
Als VBS-Neuling habe ich ein vorhandenes Script modifiziert.
Dieses soll alle Unterordner eines genannten (oder des aktuellen) Verzeichnisses durchsuchen und für jeden Unterordner die Anzahl der gefundenen Dateien angeben. Schließlich soll das Ergebnis (einschl. der Gesamtzahl von Dateien) in eine Log-Datei dikumentiert werden. Rekursionstiefe unbegrenzt.
Das von mir modifizierte Script bringt eine Erlaubnisverweigerung in Zeile 18.
Außerdem fehlt die Gesamtzahl der Dateien.
Und ich hätte gerne das Startverzeichnis (hier also 'Digitale Bilder' ) weggelassen;
also z.B. Start im Ordner Reisen
Über Hilfe würde ich mich sehr freuen
Micha:
wieder stehe ich vor einem Problemchen.
Als VBS-Neuling habe ich ein vorhandenes Script modifiziert.
Dieses soll alle Unterordner eines genannten (oder des aktuellen) Verzeichnisses durchsuchen und für jeden Unterordner die Anzahl der gefundenen Dateien angeben. Schließlich soll das Ergebnis (einschl. der Gesamtzahl von Dateien) in eine Log-Datei dikumentiert werden. Rekursionstiefe unbegrenzt.
Das von mir modifizierte Script bringt eine Erlaubnisverweigerung in Zeile 18.
Außerdem fehlt die Gesamtzahl der Dateien.
Und ich hätte gerne das Startverzeichnis (hier also 'Digitale Bilder' ) weggelassen;
also z.B. Start im Ordner Reisen
- Reisen\USA\Colorado wäre falsch --> richtig wäre USA\Colorado
- Reisen\USA\California\Los Angeles wäre falsch --> stattdessen USA\California\Los Angeles
Über Hilfe würde ich mich sehr freuen
Micha:
Dim goFso, gcsFolder, gcsSubFolder, lcsSubFolder
Set goFso = CreateObject("Scripting.FileSystemObject")
set gcsFolder = goFso.GetFolder("i:\Digitale Bilder\Reisen\USA")
' set gcsFolder = goFso.GetFolder(".") ' aktuelle Ordner
const strLogFile="log.txt"
Call CountFiles(gcsFolder)
Set gcsSubFolder = gcsFolder.SubFolders
Set objFile = goFso.CreateTextFile(strLogFile)
For Each SubFolder In gcsSubFolder
Call countFiles(SubFolder)
next
Sub CountFiles(folder)
Dim lcsFolder, lcsSubFolder
set lcsFolder = goFso.GetFolder(folder)
set objFile = goFso.CreateTextFile(strLogFile) <---
objFile.WriteLine ("Ordner: ") & gcsFolder
objFile.WriteLine ("¯¯¯¯¯¯¯¯¯¯¯¯¯¯")
objFile.WriteLine(Folder & " : " &lcsFolder.files.count)
' WScript.Echo(Folder & " : " &lcsFolder.files.count)
set lcsSubFolder = lcsFolder.SubFolders
For Each sSubFolder In lcsSubFolder
Call CountFiles(sSubFolder)
Next
Set lcsSubFolder = Nothing
Set lcsFolder = nothing
objFile.close
End Sub
Set gcsSubFolder = nothing
set gcsFolder = nothing
Set goFso = nothing
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 260452
Url: https://administrator.de/forum/vbs-erlaubnis-verweigert-in-for-next-schleife-260452.html
Ausgedruckt am: 06.01.2025 um 23:01 Uhr
6 Kommentare
Neuester Kommentar
const strLogFile="log.txt"
Dim goFso, gcsFolder, subfolder,objFile
Set goFso = CreateObject("Scripting.FileSystemObject")
set gcsFolder = goFso.GetFolder("i:\Digitale Bilder\Reisen")
Set objFile = goFso.CreateTextFile(strLogFile)
For Each subfolder In gcsFolder.SubFolders
folderCount = 0
strSubFolders = ""
CountFiles subfolder
objFile.WriteLine "Ordner: " & subfolder.Path
objFile.WriteLine "Gesamtanzahl Dateien : " & folderCount
objFile.WriteLine strSubFolders
objFile.WriteLine "------------------------"
Next
objFile.Close
MsgBox "Feddich"
set gcsFolder = nothing
Set goFso = Nothing
Set objFile = Nothing
Sub CountFiles(folder)
On Error Resume Next
folderCount = folderCount + folder.files.count
strSubFolders = strSubFolders & folder.Path & " : " & folder.files.count & vbNewLine
For Each sSubFolder In folder.SubFolders
CountFiles sSubFolder
Next
End Sub
Zitat von @Gurkenhobel:
Danke Dir,
ja soweit geht das Script schon ganz gut, habe die Zeilen 11 u. 12 auskommentiert.
Wieso ?? Darin steht gerade eben die Gesamtanzahl der Dateien des jeweiligen Ordners aus der ersten Ebene inkl. aller Subordner...Danke Dir,
ja soweit geht das Script schon ganz gut, habe die Zeilen 11 u. 12 auskommentiert.
- es fehlt eben nur noch die Gesamtzahl aller Dateien im angegebenen gcsfolder und darunter
s.o. Ich gehe davon aus das du den "Reisen-Ordner" angibst und für alle Ordner der ersten Ebene die Gesamtanzahl inkl. deren Unterordner ermittelt wird. Du gibst also an E:\DigiBilder\ReisenAnsonsten musst du das gewünschte besser Erläutern ....
- und der verkürzte Ordner-Link (statt E:\DigiBilder\Reisen\USA\California\Los Angeles --> Reisen\USA\California\Los
Angeles wenn man bei DigiBilder das Script 'startet'.)
Das lässt sich mit einem einfachen replace zwischen Zeile 10 und 11 machen ....Angeles wenn man bei DigiBilder das Script 'startet'.)
strSubFolders = Replace(strSubfolders,"E:\DigiBilder\","",1,-1,1)
Das ist doch Kinderkacke, einfach in der ersten Schleife eine weitere Variable für den Total-Zähler hernehmen die die Variable folderCount bei jedem Durchlauf hinzuaddiert, und dann nach der Schleife in die Datei schreibt. Feddich ...