none
Get-Childitem und Copy-Item RRS feed

  • Frage

  • Hi,

    Ich habe ein Anliegen und leider auch noch unter Zeitdruck.

    Ich müsste Unterordner eines Verzeichnisses durchsuchen nach Dateien mit einer bestimmten Datei-Endung (geht wahrscheinlich mit Get-Childitem) und die gefundenen Dateien aus den Ordnern auf ein anderes Laufwerk kopieren (wohl mit Copy-Item)....aber im Zielverzeichnis soll die kopierte Datei den Namen des Quell-Pfades bekommen. (zb. die Datei c:\doks\win\namen.dat müsste im Zielverzeichnis den Dateinamen doks\win\namen.dat haben). Hintergrund ist, dass in den Quellverzeichnissen die Daten teilweise gleich benannt sind und im Zielverzeichnis so wieder eindeutig zuordenbar werden sollen.

    Alternativ würde wohl auch gehen, dass man den Quellpfad ermittelt und im Zielverzeichnis eine gleiche Verzeichnisebene anlegt (2 Ebenen), bevor man die jeweilige Datei reinkopiert. In dem Fall müssten die Dateien nicht umbenannt werden. Ist halt nur die Frage, welche Version schneller umzusetzen geht.

    Beste Grüße

    Antonio

     

     

    Donnerstag, 15. September 2011 16:57

Antworten

  • Das geht so:

    $quellpfad = "D:\folder"
    $zielpfad = "E:\folder"
    $endung = "*.pdf"
    
    # quellpfad einlesen
    $dat = gci -Path $quellpfad -Include $endung -Recurse   
    
    foreach ($file in $dat) {
    
        # neuen Dateinamen von ungültigen Zeichen befreien
        $newname = ($file.Fullname).replace("\","_").replace(":","_")
        
        Copy-Item ($file.fullname) ($zielpfad+"\"+$newname) -WhatIf
    }
    
    


    Das "-whatif" im Copy-befehl kannst du rauslöschen, wenn das Ergebnis wie gewünscht ist.

    Du bekommst allerdings Probleme wenn deine Pfade so lang sind, das die daraus resultierenden Zielnamen (Quellpfad+Zielpfad+Dateiname) länger als 260 Zeichen werden.

    Lies auch bitte mal diesen Post für zukünftige Fragen.

    Grüße, Denniver


    Blog: http://bytecookie.wordpress.com

    Hilf mit und markiere hilfreiche Beiträge als "Hilfreich" und Beiträge die deine Frage ganz oder teilweise beantwortet haben als "Antwort".
    Samstag, 17. September 2011 11:51
    Moderator