Hallo Forum,
ausgangssituation ist, dass in einem Ordner viele Unterordner mit Dateien liegen. Mein Script soll nun ausgehend vom übergeordneten Ordner, in welchem es auch aufgerufen wird, dessen Namen ermitteln. Dann soll es einen Ordner mit dem Namen des übergeordneten Ordners anlegen, welcher zusätzlich noch den Suffix _files bekommt. Nun soll das Script durch alle unterordner des übergeordneten Ordners iterieren, alle dort befindlichen Dateien in den Ordner [Elternordner]_files kopieren. Dabei ist wichtig, dass alle Dateien am Zielort einen numerischen Präfix bekommen. Das Script soll also vorher zählen, wie viele Dateien es insgesamt zu kopieren hat und anhand der Anzahl von Ziffern in dieser Zahl alle Präfixe mit führenden Nullen auffüllen.
Mein Script sieht bisher so aus:
Leider funktioniert das nicht so, wie ich mir das gedacht habe. Ich Bekomme beim objFolder in Zeile 21 die Fehlermeldung, dass das Objekt erforderlich sei. Dabei dachte ich, ich hätte das oben mit dem Create Statement erzeugt.
Kann mir hier jemand helfen?
LG
Richard
*Code-BBCode eingefügt*
ausgangssituation ist, dass in einem Ordner viele Unterordner mit Dateien liegen. Mein Script soll nun ausgehend vom übergeordneten Ordner, in welchem es auch aufgerufen wird, dessen Namen ermitteln. Dann soll es einen Ordner mit dem Namen des übergeordneten Ordners anlegen, welcher zusätzlich noch den Suffix _files bekommt. Nun soll das Script durch alle unterordner des übergeordneten Ordners iterieren, alle dort befindlichen Dateien in den Ordner [Elternordner]_files kopieren. Dabei ist wichtig, dass alle Dateien am Zielort einen numerischen Präfix bekommen. Das Script soll also vorher zählen, wie viele Dateien es insgesamt zu kopieren hat und anhand der Anzahl von Ziffern in dieser Zahl alle Präfixe mit führenden Nullen auffüllen.
Mein Script sieht bisher so aus:
Visual Basic-Quellcode
- ' Ordner aus dem aufgerufen wird ermitteln.
- currentFolder = CreateObject("WScript.Shell").CurrentDirectory
- ' Ordnernamen ermitteln (Nur den letzten teil)
- folderName = Right(currentFolder, Len(currentFolder) - InStrRev(currentFolder, "\"))
- ' Zielordner definieren
- targetFolder = currentFolder & "\" & folderName & "_files"
- ' Zielordner anlegen, wenn er noch nicht existiert
- Set objFSO = CreateObject("Scripting.FileSystemObject")
- If Not objFSO.FolderExists(targetFolder) Then
- objFSO.CreateFolder(targetFolder)
- End If
- ' Zählvariable für Dateinamen
- counter = 1
- ' Ermittlung, wie viele Führungsnullen gebraucht werden
- numDigits = 0
- For Each objSubfolder In objFolder.SubFolders
- Set objSubfolder = objFSO.GetFolder(objSubfolder.Path)
- For Each objFile In objSubfolder.Files
- ' Anzahl der Ziffern in der größten Zahl aktualisieren
- numDigits = Max(numDigits, Len(counter))
- counter = counter + 1
- Next
- Next
- ' Nochmal durch die Unterordner iterieren
- counter = 1
- For Each objSubfolder In objFolder.SubFolders
- Set objSubfolder = objFSO.GetFolder(objSubfolder.Path)
- For Each objFile In objSubfolder.Files
- ' Datei zum Zielort kopieren und Präfix aus Counter anbringen
- objFSO.CopyFile objFile.Path, targetFolder & "\" & Right(String(numDigits, "0") & counter, numDigits) & "-" & objFile.Name
- counter = counter + 1
- Next
- Next
Leider funktioniert das nicht so, wie ich mir das gedacht habe. Ich Bekomme beim objFolder in Zeile 21 die Fehlermeldung, dass das Objekt erforderlich sei. Dabei dachte ich, ich hätte das oben mit dem Create Statement erzeugt.
Kann mir hier jemand helfen?
LG
Richard
*Code-BBCode eingefügt*
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()