VBScript Verschiebung von Daten

Schmidij

Cadet 4th Year
Dabei seit
Feb. 2011
Beiträge
125
Hallo zusammen.

Ich muss ein VBScript erarbeiten, welches alle Dateien in einem Ordner (Datein/Files & Unterordner) in ein anderes Verzeichnis kopiert und diese dort, fals schon vorhanden, ersetzt.

Code:
'Script verschiebt alle Dateien von str_source nach str_dest

Dim fso, folder

str_source = "C:\qulle\"
str_dest = "C:\ziel\"


Set fso = CreateObject("scripting.FileSystemObject")
Set folder=fso.GetFolder(str_source)

for each file in folder.Files
     fso.CopyFile file.Path, str_dest, true
next
so sieht zur Zeit mein Script aus.

Doch im Verzeichnis "C:\Qulle\" ist eine .txt (1.txt) und ein Ordner, welcher auch eine .txt (2.txt) behinhaltet vorhanden.

Wird das Script ausgeführt, wird nur die 1.txt verschoben.

Kann mir jemand Helfen ?

Besten Dank schon jetzt !
 

Madman1209

Fleet Admiral
Dabei seit
Nov. 2010
Beiträge
24.944
Hi,

wofür denn Erarbeiten? Das ganze schreit ja förmlich "Hausaufgabe heute: rekursives Kopieren mit VB" ;)

Google doch einfach mal "Ordner rekursiv kopieren", da gibt es fertige Lösungen ohne das Rad neu erfinden zu müssen.

VG,
Mad
 

Hancock

Captain
Dabei seit
Nov. 2007
Beiträge
3.375
Laut MSDN hat ein Folder Objekt diese Methode.
Sonst guckste dir mal Rekursion an und machst ne einfache Funktion:
Tipp: In Etwa:
function mycopyfunction(mein_quellpfad,mein_zielpfad)
für alle elemente in mein_quellpfad
kopiere sie
wenn element ein odner
mycopyfunction(mein_quellpfad+ordner.name,mein_zielpfad+ordner.name)
end function
 

Schmidij

Cadet 4th Year
Ersteller dieses Themas
Dabei seit
Feb. 2011
Beiträge
125
Laut MSDN hat ein Folder Objekt diese Methode.
Sonst guckste dir mal Rekursion an und machst ne einfache Funktion:
Tipp: In Etwa:
function mycopyfunction(mein_quellpfad,mein_zielpfad)
für alle elemente in mein_quellpfad
kopiere sie
wenn element ein odner
mycopyfunction(mein_quellpfad+ordner.name,mein_zielpfad+ordner.name)
end function

Code:
Dim fso, folder


Set fso = CreateObject("scripting.FileSystemObject")
Set folder=fso.GetFolder(quelle)

for each file in folder.Files
     fso.CopyFolder ("C:\qulle\","C:\ziel\", true)
next
Erscheint die Fehlermeldung:

"Beim Aufrufen einer Unterroutine dürfen keine Klammern verwendet werden."
 

Schmidij

Cadet 4th Year
Ersteller dieses Themas
Dabei seit
Feb. 2011
Beiträge
125
Da die alte Version nicht funktioniert hat, konnte ich eine neue Version aus dem I-net ausfindig machen:

Code:
'Script verschiebt alle Dateien
 
verschiebung "c:\quelle\"

 
Sub verschiebung(quelle)
Dim fs, f, f1, fc, s
ziel = "c:\ziel\"
quelle = "c:\quelle"

Set fs = CreateObject("scripting.FileSystemObject")
Set f = fs.GetFolder(quelle)
Set fc = f.SubFolders

for each f1 in fc
     fs.CopyFolder quelle, ziel, true
 next

 End Sub
Doch Nun sollten nur die Unterordner kopiert werden -> als nicht im Ziel Ordner:
"C:\Ziel\Quelle \Unterordner vorhanden sein
sonder direkt
"C:\Ziel\Unterordner"

einer eine Idee ?
Ergänzung ()

Da die alte Version nicht funktioniert hat, konnte ich eine neue Version aus dem I-net ausfindig machen:

Code:
'Script verschiebt alle Dateien
 
verschiebung "c:\quelle\"

 
Sub verschiebung(quelle)
Dim fs, f, f1, fc, s
ziel = "c:\ziel\"
quelle = "c:\quelle"

Set fs = CreateObject("scripting.FileSystemObject")
Set f = fs.GetFolder(quelle)
Set fc = f.SubFolders

for each f1 in fc
     s.CopyFolder quelle, ziel, true
 next

 End Sub
Doch Nun sollten nur die Unterordner kopiert werden -> als nicht im Ziel Ordner:
"C:\Ziel\Quelle \Unterordner vorhanden sein
sonder direkt
"C:\Ziel\Unterordner"

einer eine Idee ?

Konnte Behoben werden :) mit:

s.CopyFolder quelle & "\*.*", ziel, true
 
Top