slider-override

Benötige Hilfe mit "move-item" in verbindung mit "-force"

Ich bin seit tagen ab verzweifeln,

Ich benötige einen simplen befehl um Ordern (welche datein beinhalten zu verschieben)

Da es auf einem WEBDAV Laufwerk passiert kommt keiner kein xcopy oder robocopy in frage, da hier im hintergrund immer kopiert und dann gelöscht wird.

bei einem "move-item" oder normal "move" hingegen wird die datei direkt verschoben.

Hier mein Aktueller Code:
ls "O:\Incomming\"| where{  $_.creationtime -lt (get-date).AddMinutes(-2)}|foreach{move-item $_.fullname "O:\_New\" -force}   

Kurze beschreibung:
listet alle dateien/Ordner in Ordner Incomming auf, wenn Sie älter sind als 2 min, verschiebt er diese in _New.

Das funktioniert soweit auch, bis auf den "-force" befehl. (wenn eine datei oder ein Ordner schon existiert und er soll überschrieben werden
bekomme immer "move-item : Eine Datei kann nicht erstellt werden, wenn sie bereits vorhanden ist."

Ich habe auch schon versucht den "-force wo anders zu platzieren, aber ohne erfolg face-sad

Hat jemand eine idee ?
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 256285

Url: https://administrator.de/forum/benoetige-hilfe-mit-move-item-in-verbindung-mit-force-256285.html

Ausgedruckt am: 22.06.2025 um 21:06 Uhr

Dani
Dani 29.11.2014 aktualisiert um 15:13:37 Uhr
Goto Top
Moin,
du wirst den Umweg über Copy-Item und Remove-Item gehen müssen. Move-Item lässt kein Überschreiben von bestehenden Verzeichnissen zu. Hingegen bei Dateien bist du mit dem Parameter -Force auf dem richtigen Weg.


Gruß,
Dani
Slider-Override
Slider-Override 29.11.2014 um 14:38:45 Uhr
Goto Top
Hmmm aber mit copy-item wird eine kopie angelegt, das kann ich nicht nutzen den dann würde er via Webdav die Datei neu hochladen face-sad mist
colinardo
Lösung colinardo 29.11.2014, aktualisiert am 08.12.2014 um 07:22:39 Uhr
Goto Top
Moin,
ohne die Benutzung von copy-item und nur mit move, etwa so:
$source = 'O:\Incomming'  
$target = 'O:\_New'  
dir $source -recurse | ?{!$_.PSIsContainer -and $_.creationtime -lt (get-date).AddMinutes(-2)} | %{
  $newdir =  $_.Directoryname.Replace($source,$target)
  if(!(Test-Path $newdir)){md $newdir -Force}
  move-item $_.fullname $newdir -force
} 
Grüße Uwe
Slider-Override
Slider-Override 08.12.2014 um 07:26:24 Uhr
Goto Top
Hier meine Lösung (harte arbeit in PS):


$SourceFolder = "O:\_FTP_IN"
$DesFolder = "O:\_New"

  1. 1 erstellt Ordner (geht)
Get-ChildItem -Directory -Path $SourceFolder -Recurse | % {New-Item -Path (Join-Path -Path $DesFolder -ChildPath ($_.FullName.Substring($SourceFolder.Length))) -Force -ItemType Directory}

  1. 2 Verschiebt dateien aus unterordner an Ziel-Unterordner (überschreibt auch wenn vorhaden)
cd $SourceFolder

Move-Item -Path (Join-Path -Path $SourceFolder -ChildPath ("\*.*")) -Destination ((Join-Path -Path $DesFolder -ChildPath ("\")) + "\") -Force


Get-ChildItem -Directory -Path $SourceFolder -Recurse | % {
echo ("Moving files to folder: " + $_.FullName)
Move-Item -Path ($_.FullName + "\*.*") -Destination ((Join-Path -Path $DesFolder -ChildPath ($_.FullName.Substring($SourceFolder.Length))) + "\") -Force
}

  1. Löscht Ordner die seit 60 min nicht verändert wurde.
ls $SourceFolder -recurse | where { $_.creationtime -lt (get-date).AddMinutes(-60)} | del -recurse