Per Batch Dateien in einem Ordner und Unterordner aufteilen
Hallo zusammen,
ich bin neu hier und hätte zu Beginn gleich mal eine Frage, da ich Hilfe benötige.
Ich habe einen Ordner, worunter sich weitere Ordner befinden. Diese Ordner beinhalten Tif-, Text- und XML-Dateien. Zu jeder Tif-Datei gehört eine Text- und eine XML-Datei. Das erkennt man am gleichbleibenden Dateinamen. Beispiel: a.tif, a.txt, a.xml, b.tif, b.txt, b.xml, usw...
In diesen Ordnern befinden sich die oben beschriebenen Dokumente. Zudem kann es aber auch sein, dass es weitere Unterordner gibt, die selbiges beinhalten, also wieder Tif-Dateien mit zugehörigen Text- und XML-Dateien.
Die Struktur ist beispielsweise so:
Hauptordner -> Ordner1 -> UnterordnerVonOrdner1 -> tif, txt, xml ....
-> tif, txt, xml ...
-> Ordner2 -> tif, txt, xml ...
-> Ordner3 -> UnterordnerVonOrdner3 -> tif, txt, xml ....
-> tif, txt, xml ...
Ich möchte nun diese Datenmenge aber aufteilen. Am besten im Verhältnis 70/30. Also 30% der Dokumente in diesen Ordnern sollen genau in derselben Struktur in einen anderen Ordner "ausgelagert" werden. Beispielsweise in einen Ordner namens Hauptordner2.
Könnt Ihr mir hierbei behilflich sein?
Vielen Dank vorab!
ich bin neu hier und hätte zu Beginn gleich mal eine Frage, da ich Hilfe benötige.
Ich habe einen Ordner, worunter sich weitere Ordner befinden. Diese Ordner beinhalten Tif-, Text- und XML-Dateien. Zu jeder Tif-Datei gehört eine Text- und eine XML-Datei. Das erkennt man am gleichbleibenden Dateinamen. Beispiel: a.tif, a.txt, a.xml, b.tif, b.txt, b.xml, usw...
In diesen Ordnern befinden sich die oben beschriebenen Dokumente. Zudem kann es aber auch sein, dass es weitere Unterordner gibt, die selbiges beinhalten, also wieder Tif-Dateien mit zugehörigen Text- und XML-Dateien.
Die Struktur ist beispielsweise so:
Hauptordner -> Ordner1 -> UnterordnerVonOrdner1 -> tif, txt, xml ....
-> tif, txt, xml ...
-> Ordner2 -> tif, txt, xml ...
-> Ordner3 -> UnterordnerVonOrdner3 -> tif, txt, xml ....
-> tif, txt, xml ...
Ich möchte nun diese Datenmenge aber aufteilen. Am besten im Verhältnis 70/30. Also 30% der Dokumente in diesen Ordnern sollen genau in derselben Struktur in einen anderen Ordner "ausgelagert" werden. Beispielsweise in einen Ordner namens Hauptordner2.
Könnt Ihr mir hierbei behilflich sein?
Vielen Dank vorab!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 764933439
Url: https://administrator.de/forum/per-batch-dateien-in-einem-ordner-und-unterordner-aufteilen-764933439.html
Ausgedruckt am: 16.07.2025 um 19:07 Uhr
8 Kommentare
Neuester Kommentar
Hmmmm.... Es sind also alle 200 Ordner in Ebene1 etwa gleich groß? Ich würde dann aus der Ebene1 die "Ordner001" bis "Ordner060" im Explorer packen und aus "Hauptordner1" in "Hauptordner2" schieben. Dauert 2 Sekunden. (Das Verschieben an sich dauert natürlich länger, je nach Datenmenge, Festplatte, Netzwerk...)
Wie man Odnergrößen ermitteln kann hat Wolfgang Sommergut hier sehr gut beschrieben...
windowspro.de/script/measure-object-groesse-verzeichnissen-datei ...
windowspro.de/script/measure-object-groesse-verzeichnissen-datei ...
Servus,
würde ich gleich heutzutage gleich per Powershell abfackeln
Prüfe mal ob das deinen Anforderungen gerecht wird.
Ansonsten wenn es unbedingt sein muss geht es auch mit dem betagten Batch
Grüße Uwe
würde ich gleich heutzutage gleich per Powershell abfackeln
$hauptordner1 = 'D:\Hauptordner1'
$hauptordner2 = 'D:\Hauptordner2'
$groups = ls $hauptordner1 -File -Recurse -Force | group Basename
$groups | select -Last ([int]($groups.Count * 0.3)) | %{
$target = [System.IO.DirectoryInfo]($_.Group.DirectoryName -replace [regex]::Escape($hauptordner1),$hauptordner2)
$target.Create()
$_.Group | move-item -Destination $target -Verbose
}
Ansonsten wenn es unbedingt sein muss geht es auch mit dem betagten Batch
@echo off &setlocal enabledelayedexpansion
set "folder1=D:\Hauptordner1"
set "folder2=D:\Hauptordner2"
set "cnt="
for /f "delims=: tokens=1" %%a in ('dir /b /s /a-d "%folder1%\*.tif" ^| findstr /n .') do set /a cnt=%%a*3
set /a cnt=(%cnt%/10)
for /f "delims=" %%a in ('dir /b /s /a-d "%folder1%\*.tif"') do (
if !cnt! GTR 0 (
set "dir=%%~dpa"
set "targetdir=!dir:%folder1%=%folder2%!"
md "!targetdir!" >nul
copy "%%a" "!targetdir!"
copy "%%~dpna.xml" "!targetdir!"
copy "%%~dpna.txt" "!targetdir!"
set /a cnt-=1
)
)
Läuft testweise einwandfrei 😉.
PowerShell - Leitfaden für Anfänger
Falls du mit Powershell nicht klar kommst / per du bist, habe ich oben noch eine Batch-Variante ergänzt.
So long. Wenn's das dann war bitte auch als gelöst markieren nicht vergessen.
Grüße Uwe
Wie muss ich denn das PowerShell Skript starten?
Wenn du das schon fragen musst dann sei dir dringend folgende Lektüre empfohlenPowerShell - Leitfaden für Anfänger
Falls du mit Powershell nicht klar kommst / per du bist, habe ich oben noch eine Batch-Variante ergänzt.
So long. Wenn's das dann war bitte auch als gelöst markieren nicht vergessen.
Grüße Uwe