Hallo, Marco!
ich habe folgendes Problem: Ich möchte eine Datei in jeden
Ordner einer Verzeichnisstruktur kopieren.
Da die Namen und die Anzahl der Verzeichnisse variabel sind,
muss das Script in der Lage sein, diese Datei in jedes
gefundene Verzeichnis zu kopieren.
Mal so ganz grob:
Sub KopiereDateiInAlleVerzeichnisse(pstrDatei as String, pstrQuellVerz as String, pstrVerz as String)
' Der Einfachheit halber: Beim Kopieren brauche ich den
' Dateinamen ein mal mit, ein mal ohne Pfad
' Daher hier die Trennung bei der Übergabe
' Kannst aber auch Datei und Pfad übergeben und den Dateinamen
' hier separieren.
dim astrVerz() as string
dim strDir as string
dim lngAnz as string
' zuerst alle Verzeichnisse in Array einlesen;
' dabei zuerst die Anzahl bestimmen:
lngAnz=0
strDir = Dir(pstrVerz &"\*.\*", vbDirectory)
Do While strDir ""
if strDir "." and strDir".." then
lngAnz=lngAnz+1
endif
strDir=Dir
loop
' Array redimensionieren und füllen
Redim astrVerz(lngAnz)
lngAnz=0
strDir = Dir(pstrVerz &"\*.\*", vbDirectory)
Do While strDir ""
if strDir "." and strDir".." then
lngAnz=lngAnz+1
astrVerz(lngAnz)=pstrVerz & "\"& strDir
' Auderdem schon mal Datei in dieses Verzeichnis kopieren:
FileCopy pstrQuelle &"\"& pstrDatei, pstrVerz & "\"& strDir &"\"& pstrDatei
endif
strDir=Dir
loop
' Jetzt rekursiv alle Unterverzeichnisse durchgehen
for lngAnz=1 to UBound(astrVerz)
call KopiereDateiInAlleVerzeichnisse(pstrDatei, pstrQuellVerz, astrVerz(lngAnz))
next lngAnz
End Sub
Wie immer ungetestet/uncompiliert.
Das Einlesen der Verzeichnisse in ein Array ist notwendig, weil sonst der wiederholte Dir-Befehl nicht funktioniert, wenn zwischendrin ein anderer (selbst in einer anderen Prozedur) Dir-Befehl aufgerufen wurde.
Gruß, Manfred