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

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

Ausgedruckt am: 22.11.2024 um 12:11 Uhr

emeriks
Lösung emeriks 12.11.2020 um 12:23:09 Uhr
Goto Top
Hi,
was gibt er aus, wenn Du in Zeile 18 den Pfad der Datei ausgeben lässt?
$file.FullName
E.
146189
Lösung 146189 12.11.2020 aktualisiert um 12:51:26 Uhr
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\"  
# .....
chris123
chris123 12.11.2020 um 12:50:59 Uhr
Goto Top
Super, 1000dank, das war es !

In Zeile 19 musste bei $file Fullname ergänzt werden.
146189
Lösung 146189 12.11.2020 aktualisiert um 12:53:34 Uhr
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.