mehrere Unterordner in mehrere Überordner kopieren

cofffeeman

Cadet 1st Year
Registriert
Jan. 2024
Beiträge
13
Guten Morgen Computerfreunde,

ich habe ein Problem und hoffe ihr könnt mir dabei helfen:

Ich habe folgende Struktur:

Ordner
-> Unterordner
-> Unterordner
-> Dateien (bzw. auch Ordner) (von hier)


Diese Struktur habe ich 100 x.

Ich möchte nun folgendes automatisiert durchführen lassen.

Dateien bzw. (Ordner) werden ausgeschnitten und in den Ordner ganz oben kopiert. Die beiden Unterordner werden gelöscht.

Dies möchte ich bei allen Ordner durchführen.

Gibt es da etwas das mir diesen Prozess ermöglicht?

Ich bräuchte bitte auch eine Erklärung, wie das funktionieren soll, falls ihr Programme bzw. Explorer Befehle anbietet.

VIelen Dank im Voraus.
 
Guten Morgen und herzlich Willkommen im Forum.

Ja ganz einfach.
Geh in den Ordner, geh dann auf die suche und suche nach:
1705567100350.png

Dann werden alle Daten aufgelistet,
Dann Ausschneiden und in den Ordner wo es hin soll kopieren.
 
Guten Morgen und vielen Dank für die Begrüßung Roger,

Das hilft mir glaube ich nicht, da ich nicht alles in einen Ordner haben will.

Die Struktur soll bestehen bleiben.

Außerdem werden mir so auch die ganzen Unterordner mit angezeigt. Das ist natürlich sehr unübersichtlich.

Ich möchte das auch nicht manuell machen. Manuell ist kein Ding. Nur ist das ein enormer Aufwand.
 
Zuletzt bearbeitet:
cofffeeman schrieb:
Dateien bzw. (Ordner) werden ausgeschnitten und in den Ordner ganz oben kopiert. Die beiden Unterordner werden gelöscht.
Einfach verschieben aus den Unterordnen und dann die leeren Ordner löschen. Unter Linux würde es mit mv und find machbar sein. Hier kann man sich kleines Skript basteln.

Wenn ich es richtig verstanden habe.
Ergänzung ()

Mir ist auch nicht so ganz ersichtlich was der IST und SOLL Zustand sein soll.
 
Ja, eine konkrete Darstellung von IST- und SOLL-Zustand (ein Ausschnitt reicht) würde stark helfen.
 
Ich versuche es nochmal genauer zu beschreiben mit Namen für das bessere Verständnis:

Ich habe ein Root Verzeichnis. In diesem Root Verzeichnis habe ich drei Ordner:

Filme
Bilder
Musik

In diesen Ordner sind jeweils 3 weitere Unterordner zu finden. Also so:


Filme -> Namen -> Größe -> Länge -> Inhalt (Dateien und Ordner)
Bilder -> Ort -> Zeit -> Kinder -> Inhalt (Dateien und Ordner)
Musik -> Titel -> Interpret -> Album ->Inhalt (Dateien und Ordner)


In den letzten Unterordnern sind dann Dateien sowie weitere Ordner drin. Also so:

Länge -> Mac Miller.mp3
Eminem.mp3
mehrer Lieder (Ordner)

Kinder -> Inhalt genau wie bei Ordner "Länge" (Jedoch nicht genau gleiche Dateien und Ordner nur die Struktur ist gleich)

Album - > Inhalt genau wie bei Ordner "Länge" (Jedoch nicht genau gleiche Dateien und Ordner nur die Struktur ist gleich)


Jetzt zu dem was ich haben will:

Den Inhalt von Ordner "Länge" (Mac Miller.mp3, Eminem.mp3, Mehrere Lieder (Ordner) möchte ich nun in das Verzeichnis "Musik" kopiert haben. Danach möchte ich die Ordner die über diese Inhalten waren gelöscht haben. Das wären in unerem Fall die Ordner "Titel, Interpret, Album".

Am Ende habe ich Den Ordner "Musik" und darin die enthalten Inhalte des Ordners "Album"

Struktur wäre dann so:

Von: Musik -> Titel -> Interpret -> Album ->Inhalt (Dateien und Ordner)

Zu: Musik -> Inhalt (Dateien und Ordner)


Mit dem Inhalt der Ordner "Kinder" und dem Inhalt des Ordners "Album" soll das gleiche passieren. Dieser Inhalt soll aber in die jeweiligen Ordner verschoben werden. Also Inhalt des Ordners Kinder in "Bilder" und Inhalt des Ordners "Album" in "Musik"
 
Zuletzt bearbeitet:
Das bekommst Du so nur mit Scripting hin: DOS, Powershell, WSL (Bash)...

Mach aber auf alle Fälle VORHER eine Sicherung und bau Dir ein Testszenario auf, was Du immer wieder herstellen kannst. Mit ChatGPT kann man das prima lösen, wenn man nicht programmieren kann.

Deine Ordnerstruktur bei Filmen? Wieso ist die so gemacht worden? Größe und Länge?
 
Das mit der Ordnerstruktur ist nur ein Beispiel fürs Verständnis. Das ist in der Realität anders.

Kannst du mir beim scripten helfen? Ich habe sowas noch nicht gemacht und wüsste nicht wo ich anfangen soll. Gibt es mir Infos? Oder ein Programm für mein Problem?

Danke
 
Da Du eine gewisse Logik in der Verarbeitung benötigst, schaffst Du das mit einem Programm nicht, das mußt Du selbst programmieren.

Hinweise hast Du schon bekommen, Konsole (Eingabeaufforderung) mit DOS Befehlen, Powershell, und dann ChatGPT fragen. Du kennst ChatGPT? Da kannst Du prima solche Fragen stellen.
https://www.chip.de/downloads/ChatGPT-Desktop-Application_184581403.html
Oder Microsoft Copilot mal verwenden:
https://copilot.microsoft.com/
Ergänzung ()

cofffeeman schrieb:
Kannst du mir beim scripten helfen?
Dir ist klar, daß es - wenn man es richtig macht - einiges an Aufwand ist? Dazu müßtest Du selbst die komplette Ordnerstruktur liefern (nicht die Dateien selbst), und genau beschreiben, wohin was soll mit guten Beispielen.

https://copilot.microsoft.com/
1705573642540.png


Code:
param (
    [string]$sourceDirectory,
    [string]$destinationDirectory
)

$lastFolder = Get-ChildItem $sourceDirectory -Recurse | Where-Object { $_.PSIsContainer } | Select-Object FullName | Sort-Object FullName -Descending | Select-Object -First 1
Move-Item $lastFolder.FullName $destinationDirectory

Willkommen in der schönen Welt der KI. 🤗
 
Zuletzt bearbeitet:
Ich kenne dein Problem zwar nicht im Detail, aber aus persönlicher Erfahrung möchte ich dir doch einen andern Ansatz empfehlen - nach der Methode KISS ;)

Ich hatte in meinen Daten (und zwar persönliche Daten seit anfangs der 90er Jahre ...) ebenfalls eine "geordnete Ordnerstruktur", die sinnvoll war, als ich täglich mit diesen Daten gearbeitet habe. Später bzw. in der Archivablage ist das nur noch lästiger Ballast.
Ich habe lange nach Tools gesucht, die mit * oder andern Platzhaltern umgehen können. Aber überzeugend waren die Resultate nicht, insbesondere weil die Pfadstruktur halt dann doch teilweise unterschiedlich (lang) war.

Kurz - Ich habe es anders lösen müssen:

A) Im Explorer schrittweise** sämtliche zu bereinigenden Ordner markiert und in einen (neuen) Ordner "Buffer" kopiert (ja, mitsamt Unterordner).
B) Im Ordner "Buffer" eine Suche nur nach den Dateien gestartet (.) => Liste mit allen Dateien, die im "Buffer" irgendwo vorhanden sind [selbstverständlich muss dafür in der Suche die Option "Unterordner einbeziehen" aktiviert sein].
Hinweis: Das war mein Vorgehen. In deinem Fall wäre es sinnvoll, mehrere Suchen durchzuführen, mal nach jpg, png oder andern Bilddateien, dann nach Filmen, dann nach Musik. Man kann ja mehrere Dateitypen in der Suche kombinieren.
C) Diese Liste(n) kopieren und am richtigen Ort bzw. im richtigen Ordner einfügen.
D) Testen, Dateien öffnen etc.
E) Ist alles i.O., kann man den Ordner "Buffer" löschen
F) Danach im Explorer sämtliche Ordner markieren und löschen, die in A) als Quellen verwendet worden sind. Damit werden auch Unterordner gelöscht (nötigenfalls Funktion aktivieren).

** schrittweise, um Fehlermeldungen zu vermeiden (zu viele Dateien, zu langer Name, zu wenig Speicherplatz, you name it)

Das ist sicher nicht die eleganteste Lösung, aber weil du manuell vorgehst, bist du flexibler als ein Script.
 
Aber das hast Du hoffentlich vorher entsprechend gesichert, daß Du jederzeit wieder Deine Originalstruktur wieder herstellen konntest? Bei solchen Aktionen verliert man sehr schnell Dateien bzw. richtet irreversiblen Schaden an.

Ich mach sowas gerne gescriptet und mit einem Fallback Mechanismus (+ Backup). Spart eine Menge Arbeit.
 
Wenn man solche Änderungen macht, sollte man in den Skripten ein DRY-MODUS einbauen. D.h. das Skript zeigt, was es machen würde, ohne es wirklich zu ändern. Und wenn man es final ändern will, nimmt man den DRY-MODUS raus.
 
  • Gefällt mir
Reaktionen: nutrix
a) ist ein Backup vorher immer wichtig, egal ob mit DRY oder ohne
b) Irgendwer sagte mal: Bilder sagen mehr als Tausend Worte.
Warum nicht den Wunsch weniger abstrakt einmal konkret für ein Beispiel zeigen?
 
  • Gefällt mir
Reaktionen: nutrix
Guten Morgen verehrte Freunde,

danke an euch alle für eure Zeit.

Vorallem danke ich dir nutrix für das bereitstellen eines Scripts. Ich werde es gleich mal testen.

Zazie dir ebenfalls ein großes Danke. Deiner Lösung werde ich ebenfalls etwas zeit widmen.

Mal sehen ob es was wird.

Ihr habe schonmal sehr geholfen.

Vielen Lieben Dank! :)
 
Hallo in die Runde.
ich habe ein ähnliches Thema wie "Cofffeeman" in 01/2024.
Ich möchte gern die 3 Unterordner (UO1-UO3) in jeden der 5 Ordner im Windows Explorer kopieren.

Ordner:
LW1
LW2
LW3
LW4
LW5
...

Unterordner:
UO1
UO2
UO3

Anmerkung:
5 Ordner sind nur zum Probieren. In Wirklichkeit sind es 1.200 LW-Ordner.

Kann man das automatisiert durchführen lassen?
Mit PowerShell und der Windows Eingabeaufforderung komme ich nicht weiter... :-(

Danke für ein Feedback.
 
Also ich habe die KI mal gefragt:

Ja, das lässt sich mit einem PowerShell-Skript automatisieren. Hier ist ein Beispielskript, das die Unterordner UO1-UO3 in alle 1.200 Ordner kopiert:


# Verzeichnispfad, in dem sich die Ordner LW1-LW1200 befinden
$basePath = "C:\Pfad\zu\den\Ordnern"

# Unterordner, die kopiert werden sollen
$unterordner = @("UO1", "UO2", "UO3")

# Schleife über alle Ordner LW1-LW1200
for ($i = 1; $i -le 1200; $i++) {
$lwOrdner = Join-Path -Path $basePath -ChildPath "LW$i"

# Überprüfen, ob der Ordner existiert
if (Test-Path -Path $lwOrdner) {
# Unterordner in den aktuellen Ordner kopieren
foreach ($ordner in $unterordner) {
$quellPfad = Join-Path -Path $basePath -ChildPath $ordner
$zielPfad = Join-Path -Path $lwOrdner -ChildPath $ordner

# Prüfen, ob der Unterordner bereits existiert
if (-not (Test-Path -Path $zielPfad)) {
Copy-Item -Path $quellPfad -Destination $zielPfad -Recurse
Write-Host "Unterordner '$ordner' wurde in '$lwOrdner' kopiert."
} else {
Write-Host "Unterordner '$ordner' in '$lwOrdner' bereits vorhanden, wird übersprungen."
}
}
} else {
Write-Host "Ordner '$lwOrdner' existiert nicht, wird übersprungen."
}
}


Hier ist, was das Skript tut:

1. Das Skript definiert den Basispfad, in dem sich die Ordner LW1-LW1200 befinden.
2. Es definiert die Unterordner UO1-UO3, die kopiert werden sollen.
3. Es durchläuft alle 1.200 Ordner LW1-LW1200 und prüft, ob der Ordner existiert.
4. Für jeden existierenden Ordner kopiert es die Unterordner UO1-UO3 in den Ordner, sofern sie dort noch nicht vorhanden sind.
5. Für jeden Kopiervorgang wird eine Meldung ausgegeben.

Speichern Sie das Skript in einer Datei mit der Endung .ps1 (z.B. KopierUnterordner.ps1) und führen Sie es in der PowerShell aus. Stellen Sie sicher, dass Sie den Basispfad $basePath korrekt anpassen.

Hinweis: Dieses Skript setzt voraus, dass Sie PowerShell auf Ihrem System aktiviert haben. Wenn Sie nur die Windows-Eingabeaufforderung verwenden möchten, müssen Sie die Befehle entsprechend anpassen.



Für solche Fragestellungen sind die ganzen KI Dinger wirklich hilfreich.
Obs funktioniert keine Ahnung.
 
Hallo redjack1000.
Ich habe mich im Internet belesen, entsprechende Youtube-Videos angeschaut und beide Anwendungen (PowerShell und die Windows Eingabeaufforderung) probiert, aber es hat nicht funktioniert.

Als kfm. Angestellte habe ich mit Programmiersprache nichts am Hut.

Ein fertiges Skript würde mir natürlich sehr bei dieser Aufgabe helfen... :-)
 
Kehli78 schrieb:
Ein fertiges Skript würde mir natürlich sehr bei dieser Aufgabe helfen...
Ich kenne die Konstellation (die Struktur) und die konkrete Aufgabe nicht.

Aber bei Voschlägen wie «$unterordner = @("UO1", "UO2", "UO3")» kriege ich einen Herzanfall.
Skrpite müssten eben intelligent Unterordner erfassen = erkennen und dann verlagern.

Warum sind nicht Dateimanager im Stande solche Gruppen zu erfassen und zu verlagern? Man kann doch einen ganzen Satz Ordner markieren und (ja, erschlage man mich) von einem Explorerfenster in ein anderes Explorerfenster ziehen?!
Das kann oft schneller sein als sich eine Lösung zu programmieren. Ich wäre zu Letzterem fähig, aber meine 2. Vorname ist Faulheit 😇

CN8
 

Ähnliche Themen

Zurück
Oben