gizmotronix
Goto Top

VB Script - Ordner verschieben mit Überschreiben ?

Hallo zusammen,

ich habe ein bestehendes Script, vor einiger Zeit zusammengebastelt:

Dim filesys, source, subfolder
Set filesys = CreateObject("Scripting.FileSystemObject")  
Set source = filesys.GetFolder("E:\XShare\ExportRoot\HiRes\")  
for each subfolder in source.subfolders
if now-subfolder.DateCreated>=7 then
subfolder.move("E:\XShare\ExportRoot\HiRes-OLD\")  
end if
next

Eigentlich banal, es soll alle Ordner die älter als 7 Tage sind in einen anderen Ordner verschieben. Klappt auch wunderbar AUSSER der Ordner ist im Zielordner bereits vorhanden.

Am einfachsten wäre es, wenn der Ordner bereits vorhanden ist, dass er überschrieben wird. Das ist aber mit dem "move" Befehl nicht möglich. Eine Möglichkeit die ich gesehen habe wäre zu prüfen ob der Ordner schon existiert und ihn zu löschen bevor man den move macht. Es könnte aber nun so sein, dass im neu erstellten Ordner nur eine Datei liegt, im alten Ordner aber mehrere Dateien sind. Die möchte ich nicht verlieren also es sollte schon zusammengeführt werden.

Kann mir hier jemand kurzfristig aushelfen ? Ich habs nicht so mit Scripten und wenn ich mir das langwierig zusammen suche, muss ich einstweilen immer prüfen ob das Script gelaufen ist oder wieder ein Ordnername doppelt vorkommt.

Danke !

lG
Roland

Content-Key: 44166694805

Url: https://administrator.de/contentid/44166694805

Printed on: April 28, 2024 at 01:04 o'clock

Mitglied: 7907292512
Solution 7907292512 Aug 30, 2023, updated at Aug 31, 2023 at 09:10:18 (UTC)
Goto Top
Ist doch n simples Backup ... Warum nimmt man nicht gleich sein meist sowieso vorhandenes Backup-Programm dafür?!

Oder halt die Powershell...
$quelle = "E:\XShare\ExportRoot\HiRes"  
$ziel = "E:\XShare\ExportRoot\HiRes-OLD"  
$date = (Get-Date).AddDays(-7)
foreach($folder in Get-ChildItem $quelle -Directory | ? CreationTime -lt $date){
    try{
        copy-item $folder.Fullname -Destination $ziel -Recurse -Force -EA Stop
        (Get-Item "$ziel\$($folder.Name)").CreationTime = $folder.CreationTime  
        remove-item $folder.Fullname -Recurse -Force -EA Stop
    }catch{
        write-host $_.Exception.Message -F Red
    }
}

Oder robocopy mit Parameter /minage

und und und und .... 1 Mio Möglichkeiten

Gruß sid
Member: GizmotroniX
GizmotroniX Aug 31, 2023 at 09:02:09 (UTC)
Goto Top
Hallo sid,

besten Dank schon mal für die Hilfe. Dein Script macht schon mal was ich brauche, kleiner Schönheitsfehler allerdings ist noch dass der timestamp durch das Kopieren neu gesetzt wird. Ich habe dann das ursprüngliche Datum des Ordner nicht mehr. Könntest Du da ev. nochmal kurz aushelfen ?

Danke

lG
Roland
Mitglied: 7907292512
7907292512 Aug 31, 2023 at 09:08:47 (UTC)
Goto Top
o. ergänzt.
Member: GizmotroniX
GizmotroniX Aug 31, 2023 at 11:11:32 (UTC)
Goto Top
Du bist spitze, herzlichen Dank für die schnelle Hilfe !

lG
Roland