Viele Dateien in Unterverzeichnisse verschieben (automatisiert)
Hallo zusammen,
ich habe Verzeichnisse mit Fotos, zum Teil sind da bis zu 15.000 Fotos in einem Verzeichnis.
Nun möchte ich diese Vielzahl an Bildern in Unterverzeichnisse mit jeweils 1000 oder 1500 Fotos verschieben.
Das Ursprungsverzeichnis soll also nach Ausführen des Skripts/Tools mehrere Unterverzeichnisse haben (part1, part2, part3, ...) in denen jeweils eine definierte Anzahl an Fotos enthalten ist.
Schön wäre, wenn das Tool nix tun würde, wenn weniger als die maximale Anzahl pro Unterverzeichnis vorhanden ist
Geht das mit einem Skript, gibt es dafür ein Tool, oder hat jemand eine andere Idee ?
Danke schon mal
ich habe Verzeichnisse mit Fotos, zum Teil sind da bis zu 15.000 Fotos in einem Verzeichnis.
Nun möchte ich diese Vielzahl an Bildern in Unterverzeichnisse mit jeweils 1000 oder 1500 Fotos verschieben.
Das Ursprungsverzeichnis soll also nach Ausführen des Skripts/Tools mehrere Unterverzeichnisse haben (part1, part2, part3, ...) in denen jeweils eine definierte Anzahl an Fotos enthalten ist.
Schön wäre, wenn das Tool nix tun würde, wenn weniger als die maximale Anzahl pro Unterverzeichnis vorhanden ist
Geht das mit einem Skript, gibt es dafür ein Tool, oder hat jemand eine andere Idee ?
Danke schon mal
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 229807
Url: https://administrator.de/forum/viele-dateien-in-unterverzeichnisse-verschieben-automatisiert-229807.html
Ausgedruckt am: 29.04.2025 um 02:04 Uhr
1 Kommentar
Hallo arator65, Willkommen im Forum!
Ich hatte dazu mal vor einiger Zeit ein Powershell-Script geschrieben, das Dateien gleichmäßig auf Unterordner verteilt:
Das Script verteilt Dateien in gleichen Teilen gleichmäßig auf Unterordner. Der Ordner in dem die Dateien liegen gibt man in Zeile 1 an (ohne Backslash am Ende) und die gewünschte Anzahl der Dateien in jedem Ordner, in Zeile 2. Die Dateien werden dann in Unterordner mit Namen part1 , part2 , etc. verschoben.
Der Rest der Bilder der nicht mehr ganzzahlig durch die Anzahl (1000) teilbar ist, verbleibt im Ordner, so wie du das wolltest.
☼ Grüße Uwe
p.s. wenn du noch nie mit Powershell-Scripten zu tun hattest, hier ergänzend noch eine Kurzanleitung dazu wie man solche Scripte ausführt:
Ich hatte dazu mal vor einiger Zeit ein Powershell-Script geschrieben, das Dateien gleichmäßig auf Unterordner verteilt:
Das Script verteilt Dateien in gleichen Teilen gleichmäßig auf Unterordner. Der Ordner in dem die Dateien liegen gibt man in Zeile 1 an (ohne Backslash am Ende) und die gewünschte Anzahl der Dateien in jedem Ordner, in Zeile 2. Die Dateien werden dann in Unterordner mit Namen part1 , part2 , etc. verschoben.
$folder = "D:\Bilder"
$splitNum = 1000
$items = dir "$folder\*.*" | ?{!$_.PSIsContainer}
$folderCount = [Math]::floor(($items.Count / $splitNum))
if (($items.Count) -ge $splitNum ){
for ($i=0;$i -lt $folderCount ; $i++){
$subFolder = "$folder\part$($i+1)"
if (!(Test-Path -Path $subFolder)){ mkdir $subFolder}
for ($j=$i*$splitNum;$j -lt ($i*$splitNum)+$splitNum ; $j++){
$items[$j].MoveTo("$subFolder\$($items[$j].Name)")
}
}
}else{
write-host "Im Ordner $folder sind nur $($items.Count) Dateien enthalten! Eine Aufsplittung zu je $splitNum Dateien ist daher nicht möglich."
}
☼ Grüße Uwe
p.s. wenn du noch nie mit Powershell-Scripten zu tun hattest, hier ergänzend noch eine Kurzanleitung dazu wie man solche Scripte ausführt:
Anleitung: Wie starte ich Powershell-Scripte
- Zuerst speicherst man den Code in einer Textdatei mit der Endung .ps1.
- Wenn man zum ersten mal Powershell-Scripte ausführt, musst man einmalig vorher noch das Ausführen von Scripten freischalten. Dazu öffnet man eine Powershell-Konsole und gibt dort den Befehl
Set-ExecutionPolicy RemoteSigned -Force
ein. Um diese Policy für alle User auf dem Rechner zu setzen muss man diesen Befehl in einer Powershell-Konsole mit Admin-Rechten starten. Noch ein Hinweis für 64-Bit-Systeme: Hier sollte sowohl für die 32bit und 64Bit Variante der Powershell die Policy in einer Admin-Konsole gesetzt werden:Set-ExecutionPolicy RemoteSigned -Force; start-job { Set-ExecutionPolicy RemoteSigned -Force } -RunAs32
- Jetzt kann das Powershell-Script in der Konsole mit Eingabe des Pfades der Scriptdatei, oder mit einem Rechtsklick auf die Script-Datei :Mit Powershell ausführen gestartet werden.