blabliblupp
Goto Top

Bestimmte Dateien anhand Dateinamenteils in bestimmte Ordner verschieben

Schönen guten Tag face-smile

Eventuell wurde schon ein vergleichbares Problem gelöst, ich habe aber - besonders mangels eigener Kenntnisse im Scripten - keine Lösung gefunden, die mir weitergeholfen hat. Ich möchte ein Batch für folgende Aufgabe erstellen:

In Ordner X befinden sich zahlreiche Dateien, die "[STRING]_Anlage1" benannt sind.
In Ordner Y befinden sich zahlreiche Unterordner, die bspw. "[STRING]-Max_Mustermann" benannt sind.

Ich möchte alle Dateien in Ordner X in den passenden Unterordner in Ordner Y verschieben. Welche Datei in welchen Unterordner ergibt sich aus dem [STRING].
Kann mir jemand helfen oder zu einem passenden Beitrag verlinken?

Tausend Dank im Voraus!
Beste Grüße

Content-ID: 854276755

Url: https://administrator.de/forum/bestimmte-dateien-anhand-dateinamenteils-in-bestimmte-ordner-verschieben-854276755.html

Ausgedruckt am: 07.04.2025 um 10:04 Uhr

tagol01
tagol01 29.06.2021 aktualisiert um 15:25:32 Uhr
Goto Top
z.b: so...
find . -name "String*" -exec mv -t /target {} +  

weitere infos findest du hier: dateien-finden-und-erkennen
Doskias
Doskias 29.06.2021 um 15:32:46 Uhr
Goto Top
Zitat von @blabliblupp:
Eventuell wurde schon ein vergleichbares Problem gelöst, ich habe aber - besonders mangels eigener Kenntnisse im Scripten - keine Lösung gefunden, die mir weitergeholfen hat. Ich möchte ein Batch für folgende Aufgabe erstellen:

Vielleicht auch schonmal hier irgendwo beschrieben:
https://administrator.de/latest/?search=datei+verschieben&source=hea ...
colinardo
Lösung colinardo 29.06.2021 aktualisiert um 17:04:56 Uhr
Goto Top
Servus @blabliblupp, willkommen auf Administrator.de!
Ein einfaches Powershell Beispiel zu deiner Aufgabe könnte so aussehen (Kommentare siehe Code):
# Ordner mit Quelldateien
$ordnerX = 'D:\OrdnerX'  
# Ordner mit weiteren Unterordnern
$ordnerY = 'D:\OrdnerY'  
# alle Dateien des Ordners $ordnerX auflisten und anhand des ersten Teils des Dateinamens "gesplittet" durch den underscore gruppieren 
Get-Childitem $ordnerX -File | group {$_.Basename.split("_")} | %{  
    # zielordner der mit diesem String und mit Bindestrich mit dem Rest verbunden ist suchen und Variablen zuweisen
    $target = Get-Childitem "$ordnerY\$($_.Name)-*" -Directory | select -Expand Fullname -First 1  
    # nur wenn ein Unterordner für den String gefunden wurde ...
    if ($target){
        # verschiebe die Dateien mit diesem String in den ermittelten Zielordner
        $_.Group | move-item -Destination $target -verbose
    }else{
        write-warning "Ein Ordner mit dem Anfangsstring '$($_.Name)' existiert nicht in '$ordnerY'!"  
    }
}

Zum Thema hatten wir hier auch schon mal diverse Musterlösungen, hier zu finden
Musterlösungen: Dateien verschieben abhängig vom Teil des Dateinamens

Grüße Uwe

Powershell Link-Leitfaden für Anfänger
blabliblupp
blabliblupp 30.06.2021 um 11:05:03 Uhr
Goto Top
Zitat von @colinardo:

Servus @blabliblupp, willkommen auf Administrator.de!
Ein einfaches Powershell Beispiel zu deiner Aufgabe könnte so aussehen (Kommentare siehe Code):
> # Ordner mit Quelldateien
> $ordnerX = 'D:\OrdnerX'  
> # Ordner mit weiteren Unterordnern
> $ordnerY = 'D:\OrdnerY'  
> # alle Dateien des Ordners $ordnerX auflisten und anhand des ersten Teils des Dateinamens "gesplittet" durch den underscore gruppieren 
> Get-Childitem $ordnerX -File | group {$_.Basename.split("_")} | %{  
>     # zielordner der mit diesem String und mit Bindestrich mit dem Rest verbunden ist suchen und Variablen zuweisen
>     $target = Get-Childitem "$ordnerY\$($_.Name)-*" -Directory | select -Expand Fullname -First 1  
>     # nur wenn ein Unterordner für den String gefunden wurde ...
>     if ($target){
>         # verschiebe die Dateien mit diesem String in den ermittelten Zielordner
>         $_.Group | move-item -Destination $target -verbose
>     }else{
>         write-warning "Ein Ordner mit dem Anfangsstring '$($_.Name)' existiert nicht in '$ordnerY'!"  
>     }
> }
> 

Zum Thema hatten wir hier auch schon mal diverse Musterlösungen, hier zu finden
Musterlösungen: Dateien verschieben abhängig vom Teil des Dateinamens

Grüße Uwe

Powershell Link-Leitfaden für Anfänger

Hi Uwe,

super, vielen herzlichen Dank! Hat sofort funktioniert und in den Leitfaden werde ich definitiv Zeit investieren.

Beste Grüße
Lukas