chris123
Goto Top

Dateien in Mitarbeiterordnern verschieben

Hallo,

ich komme leider bei einem Powershell-Skript nicht weiter.

Die Anforderung ist eigentlich nicht schwer. Ich habe einen Pfad" F:\Test\Scan" unter diesen Pfad sind Mitarbeiterordner. In die jeweiligen MA-Ordner wird ein Unterordner mit dem heutigen Datum erstellt. Alle Dateien in dem MA-Ordner die zum dem (Datum)-Ordner passen, sollen in diesen verschoben werden.

Mein Problem ist, unten das move-item.
Normalerweise sollte auf den Ordner "F:\Test\Scan\MA1" usw. zugegriffen werden. Gesucht werden aber nur Dateien im Ordner F:\Test\Scan.
nteressanterweise werden aber die Dateien gesucht, welche in "$files = Get-ChildItem $ma_path | Where-Object {($_.LastWriteTime -lt (Get-Date).AddDays(-1))}"
gefunden worden.
Nur, wie gesagt, werden dann die Dateien bei move-item im falschen Ordner gesucht.

So sieht mein Skript aus:

$heute = Get-Date -UFormat "%d-%m-%y"  
$base_path = "F:\Test\Scan"   
$ma_pathes = get-Childitem $base_path -Directory
Set-Location $base_path

foreach($ma_path in $ma_pathes) {

    if(!(Test-Path "$($ma_path.fullname)\$heute"))   
    {

      new-item "$($ma_path.fullname)\$heute" -itemtype "directory"  

    }
  
    $files = Get-ChildItem $ma_path | Where-Object {($_.LastWriteTime -lt (Get-Date).AddDays(-1))}

    foreach($file in $files) {
       
        move-item $file -Destination $ma_path\$heute\ 
    }
 }

Das ist meine Fehlermeldung:
move-item : Der Pfad "F:\Test\Scan\abc.pdf" kann nicht gefunden werden, da er nicht vorhanden ist.
Die Datei liegt aber in "F:\Test\Scan\MA1\

Irgendwas muss ich bei move-item verändern. aber ich weiß nicht was.

Wäre super, wenn Ihr mir helfen könnt!
Vielen Dank!

Content-Key: 621489

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

Printed on: April 16, 2024 at 08:04 o'clock

Member: emeriks
Solution emeriks Nov 12, 2020 at 11:23:09 (UTC)
Goto Top
Hi,
was gibt er aus, wenn Du in Zeile 18 den Pfad der Datei ausgeben lässt?
$file.FullName
E.
Mitglied: 146189
Solution 146189 Nov 12, 2020 updated at 11:51:26 (UTC)
Goto Top
$files = Get-ChildItem $ma_path.FullName -File | Where-Object {($_.LastWriteTime -lt (Get-Date).AddDays(-1))}
# ......
move-item $file.Fullname -Destination "$ma_path\$heute\"  
# .....
oder alternativ auch
$files = Get-ChildItem $ma_path.FullName -File | Where-Object {($_.LastWriteTime -lt (Get-Date).AddDays(-1))}
# ......
$file | move-item -Destination "$($ma_path.FullName)\$heute\"  
# .....
Member: chris123
chris123 Nov 12, 2020 at 11:50:59 (UTC)
Goto Top
Super, 1000dank, das war es !

In Zeile 19 musste bei $file Fullname ergänzt werden.
Mitglied: 146189
Solution 146189 Nov 12, 2020 updated at 11:53:34 (UTC)
Goto Top
Immer dran denken PS ist objektorientiert face-wink. Wenn du nur ein Object mit vielen Eigenschaften übergibst nimmt sie die Standardeigenschaft und hier ist das nur der Namen aber nicht der volle Pfad.