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-ID: 44166694805

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

Ausgedruckt am: 23.11.2024 um 22:11 Uhr

7907292512
Lösung 7907292512 30.08.2023, aktualisiert am 31.08.2023 um 11:10:18 Uhr
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
GizmotroniX
GizmotroniX 31.08.2023 um 11:02:09 Uhr
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
7907292512
7907292512 31.08.2023 um 11:08:47 Uhr
Goto Top
o. ergänzt.
GizmotroniX
GizmotroniX 31.08.2023 um 13:11:32 Uhr
Goto Top
Du bist spitze, herzlichen Dank für die schnelle Hilfe !

lG
Roland