darebo
Goto Top

Ordner anhand einer Excelliste vergleichen und die gefunden Ordner mit Inhalt in einen neuen Ordner gemäß Excelisteneintrag kopieren

Hallo,

ich benötige Unterstützung für folgendes Vorhaben.

Quelle:

C:\PDF\Ordner 1
bis
C:\PDF\Ordner 100000

In den jeweiligen Ordnern sind verschiedene Dateien enthalten. Diese sollen mit dem Ordner kopiert werden.

Excel-Liste

Spalten A - Auflistung der Ordner 1 - 100000
Spalte B - neues Ordnerziel

Beispiel:

1


Ziel:

Die gefunden Ordner anhand der Excelliste in Spalte A "Quelle" sollen in den Ordner anhand der Excelliste Spalte B "Ziel" kopiert werden.

Beispiel:
C:\PDF\A\1
C:\PDF\A\8
C:\PDF\A\10
C:\PDF\B\2
C:\PDF\B\3
C:\PDF\B\9
C:\PDF\C\7
C:\PDF\D\4
C:\PDF\D\5
C:\PDF\F\6

Schön wäre wenn dies als Batch oder Powershell realisiert werden könnte.

Vorab schon mal Danke für Eure Unterstützung.

Content-Key: 359059

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

Printed on: April 18, 2024 at 12:04 o'clock

Member: colinardo
Solution colinardo Dec 22, 2017 updated at 09:28:05 (UTC)
Goto Top
Servus,
Powershell z.B.
# CSV-Datei mit zwei Spalten als Überschrift 'Quelle' und 'Ziel' und ';' als Trennzeichen. 
$sourcefile = 'D:\liste.csv'  
# Ordner mit Unterordnern
$folder = 'C:\PDF'  
Import-CSV $sourcefile  -Delimiter ";" | %{  
    # quellordner
    $source = "$folder\$($_.Quelle)"  
    # zielordner
    $target = "$folder\$($_.Ziel)\$($_.Quelle)"  
    # wenn Quellordner existiert kopiere die Ordnerstruktur ans Ziel
    if (Test-Path $source){
        copy-item $source -Destination $target -Force -Recurse
    }
}
Viel Spaß und ein frohe Feiertage.
Grüße Uwe
Member: darebo
darebo Dec 22, 2017 updated at 10:10:50 (UTC)
Goto Top
Danke für die schnelle Rückmeldung.

Lösung mit Powershell funktioniert super.

Eine Frage dazu:

Wenn man statt kopieren die Funktion verschieben nimmt, läuft das Script immer auf einen Fehler.
Wo ist der Syntaxfehler?

if (Test-Path $source){

move-item -path $source -Destination $target -Force

}

Beste Grüße und ebenso frohe Feiertage
Member: colinardo
Solution colinardo Dec 22, 2017 updated at 10:33:08 (UTC)
Goto Top
Beim Verschieben musst du den Zielordner erst erstellen wenn er noch nicht existiert.
# CSV-Datei mit zwei Spalten als Überschrift 'Quelle' und 'Ziel' und ';' als Delimiter 
$sourcefile = 'D:\liste.csv'  
# Ordner mit Unterordnern 
$folder = 'C:\PDF'  
Import-CSV $sourcefile  -Delimiter ";" | %{  
    # quellordner
    $source = "$folder\$($_.Quelle)"  
    # zielordner
    $target = "$folder\$($_.Ziel)"  
    # wenn Quellordner existiert kopiere die Ordnerstruktur ans Ziel
    if (Test-Path $source){
        if(!(Test-Path $target)){md $target -Force | out-null}
        move-item $source -Destination $target -Force
    }
}