marcnrzoo
Goto Top

Powershell JPG kopieren

Hallo,

ich benötige ein PowerShell Script, das mir beim Bilder kopieren hilft.
Folgende Problemstellung, ich möchte Bilder von

Quelle:
D:\Bilder\202x\
OrdnerA\JPG\*.jpg
OrdnerB\JPG\*.jpg
OrdnerC\JPG\*.jpg
...

nach Laufwerk E: oder F:\Bilder\202x\ kopieren.

Ziel:
E:\Bilder\202x\
OrdnerA\*.jpg
OrdnerB\*.jpg
OrdnerC\*.jpg
...

Die Ordner sollen mit dem gleichen Namen (OrdnerA; OrdnerB; ...) wie in Laufwerk D:\Bilder\202x\ erstellt werden.
In Laufwerk D:\Bilder\202x\OrdnerA liegen die zu kopierenden .jpg Dateien jeweils im Unterordner JPG, der am Zielort aber nicht erstellt werden soll.
Das Script soll auf dem Ziellaufwerk schon existierende Ordner nicht überschreiben, um Zeit beim kopieren zu sparen.

Content-ID: 5065303698

Url: https://administrator.de/forum/powershell-jpg-kopieren-5065303698.html

Ausgedruckt am: 04.04.2025 um 13:04 Uhr

JasperBeardley
JasperBeardley 23.12.2022 um 13:43:52 Uhr
Goto Top
Moin,

und was erwartest du jetzt?
Unterstützung bei der Erstellung des Scripts, oder das es dir hier jemand fertig präsentiert?

Gruß
Jasper
MarcNrZoo
MarcNrZoo 23.12.2022 um 13:57:45 Uhr
Goto Top
Ich bin über beides dankbar.
Ich weiß jeweils nur einzelne Schritte kann es aber nicht verbinden, z.B. mit "Get-Childitem <Pfad> -Directory | select name" würde ich die Ordnernamen filtern.
DerMaddin
DerMaddin 23.12.2022 um 14:10:19 Uhr
Goto Top
versuch es mal mit...

get-childitem -directory -Recurse | select-object fullname

Das Ganze dann in ein Array rein und in einer For-Each Schleife das JPG vor dem Kopieren ins neue Ziel entfernen.
evgnbz
evgnbz 23.12.2022 aktualisiert um 14:15:31 Uhr
Goto Top
$from='D:\Bilder\202x\'
$into='E:\Bilder\202x\'


Copy-Item -Path $from -Destination $into -Recurse


so in etwa habe ich es in meinen Thema gelöst
MarcNrZoo
MarcNrZoo 23.12.2022 um 14:21:45 Uhr
Goto Top
Mit einer For-Each Schleife habe ich noch nicht gearbeitet, könntest du mir das mal als Beispiel schreiben?
evgnbz
evgnbz 23.12.2022 aktualisiert um 14:35:25 Uhr
Goto Top
$folders = @('pfad1','pfad2','pfad3')
foreach($folders in $folder) {
kopieren nach
}

so in etwa

den rest gibt es hier
DerMaddin
DerMaddin 23.12.2022 um 14:35:31 Uhr
Goto Top
Ich empfehle hier die offiziellen Hilfen

Ein Beispiel wäre aber z.B....

$quelle = 'C:\a\b\c'  
$ziel = 'D:\a\b\c'  
$ordner = get-childitem $quelle -directory -recurse | select-object fullname

foreach ($datei in $ordner)
{
$neuerordner = $datei.directoryname.replace( $quelle, $ziel )
if (-not (test-path $neuerordner)
{
md $neuerordner
}
copy-item -path $datei.fullname -destination $neuerordner
}

Eigentlich schon zu viel Code, du musst nun den Rest selber machen face-wink
4863114660
Lösung 4863114660 25.12.2022 aktualisiert um 13:19:38 Uhr
Goto Top
$quelle = "D:\Bilder"  
$ziel = "E:\Bilder"  
foreach($file in Get-ChildItem $quelle -File -Recurse -Filter *.jpg){
    $new = $file.Directory.Parent.Fullname -replace [regex]::Escape($quelle),$ziel
    if (!(Test-Path (join-path $new $file.Name))){
        copy-item $file.Fullname -Destination (md $new -Force).Fullname -verbose
    }
}
Gruß S.