VBScript Verschiebung von Daten

Schmidij

Ensign
Registriert
Feb. 2011
Beiträge
152
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 !
 
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
 
Blitzmerker schrieb:
Wie wärs mit folder.Copy(str_dest,true)?

Wie sollt es dan aussehn ?

----
@Madman
... jaa nur sind leider alles script die zu viele Optionen haben.
Möchte es schlicht halten.
 
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
 
Blitzmerker schrieb:
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."
 
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 ()

Schmidij schrieb:
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
 
Zurück
Oben