Ordner zerteilen in mehrere Teile mit vorgegebener Größe
Mahlzeit Digitalfreunde,
ich hatte sowas ähnliches schon mal gefragt, finde es aber hier nicht mehr.
Ich möchte einen Ordner mit Daten in mehrere Teile zerlegen, deren Größe ich vorgebe.
Idee: Da sind 150GB Daten in einer Ordner-Baumstruktur, und die sollen auf 3 x 64GB USB Stick Platz finden.
Lege er mir also von Ordnersomit Ornder-Teil1 (64GB), Ordner-Teil2 (64GB) und Ordner-Teil3 (rest) an.
Mit robocopy ohne script drumherum wird es nicht gehen. Ich finde aber auch keinen Ansatz, wie man das machen könnte. Es müsste ja bei (hier) 64GB einen Abbruch/Unterbrechnung geben. Das sehen aber die parameter von robocopy nicht vor.
Hat da jemand eine Idee, oder gar das perfectescript parat?
Danke, frohe Ostern.
Kreuzberger
ich hatte sowas ähnliches schon mal gefragt, finde es aber hier nicht mehr.
Ich möchte einen Ordner mit Daten in mehrere Teile zerlegen, deren Größe ich vorgebe.
Idee: Da sind 150GB Daten in einer Ordner-Baumstruktur, und die sollen auf 3 x 64GB USB Stick Platz finden.
Lege er mir also von Ordnersomit Ornder-Teil1 (64GB), Ordner-Teil2 (64GB) und Ordner-Teil3 (rest) an.
Mit robocopy ohne script drumherum wird es nicht gehen. Ich finde aber auch keinen Ansatz, wie man das machen könnte. Es müsste ja bei (hier) 64GB einen Abbruch/Unterbrechnung geben. Das sehen aber die parameter von robocopy nicht vor.
Hat da jemand eine Idee, oder gar das perfectescript parat?
Danke, frohe Ostern.
Kreuzberger
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 672558
Url: https://administrator.de/forum/ordner-zerteilen-in-mehrere-teile-mit-vorgegebener-groesse-672558.html
Ausgedruckt am: 12.05.2025 um 22:05 Uhr
11 Kommentare
Neuester Kommentar
Hey,
was spricht von Einsatz eines Werkzeuges wie zum Beispiel WinRAR ?
https://www.win-rar.com/start.html?&L=1
Du packst deinen Ordner ohne Kompression (Speichern) und lässt bequem die Zielgröße für die Blöcke definieren..
Gruß
was spricht von Einsatz eines Werkzeuges wie zum Beispiel WinRAR ?
https://www.win-rar.com/start.html?&L=1
Du packst deinen Ordner ohne Kompression (Speichern) und lässt bequem die Zielgröße für die Blöcke definieren..
Gruß
$SourceFolder = "D:\Source"
$DestinationRoot = "D:\Destination"
$maxSize = 64GB
# ========
$fldrSize = 0
$FolderIndex = 1
foreach($file in Get-ChildItem -Path $SourceFolder -File -Recurse | sort-object Length){
if ($file.Length + $fldrSize -gt $maxSize) {
$FolderIndex++
$fldrSize = 0
}
$CurrentFolderPath = Join-Path $DestinationRoot "Part-$('{0:D2}' -f $FolderIndex)$(split-path ($file.Fullname -replace ([regex]::Escape($sourceFolder))) -parent)"
if (!(Test-Path $currentFolderPath -PathType Container)){
New-Item -ItemType Directory -Path $CurrentFolderPath -Force | Out-Null
}
Copy-Item -Path $file.FullName -Destination $CurrentFolderPath
$fldrSize += $file.Length
}
tio.run-Demo
Zur Info: Die Ordnerstruktur des Quellordners wird in den "Part"-Ordnern beibehalten.
Never ever kommt mir KI fürs Programmieren in die Finger...
Meine Skripte sind alle noch echte Handarbeit.
Meine Skripte sind alle noch echte Handarbeit.
Ist das jetzt eine KI-generierte Lösung?
Die sähe von ChatGPT so aus
Zitat:
Quelle: ChstGPT KI
@echo off
setlocal EnableDelayedExpansion
:: === KONFIGURATION ===
set "SOURCE=C:\Pfad\zu\Quelle"
set "DEST_BASE=D:\Ziel\Verzeichnis"
set "MAX_SIZE_MB=4096"
set "CURRENT_PART=1"
:: Erstellt eine Liste aller Dateien
set "FILE_LIST=%TEMP%\filelist.txt"
dir /b /s /a:-d "%SOURCE%" > "%FILE_LIST%"
:: Initialisiere Zielverzeichnis
call :InitNextDestination
:: Hauptschleife über alle Dateien
for /f "usebackq delims=" %%F in ("%FILE_LIST%") do (
set "FILE=%%F"
:: Datei-Größe in Byte holen
for %%A in ("!FILE!") do set "SIZE=%%~zA"
:: Zielgröße prüfen
call :GetDirSize "!DEST!" CURRENT_SIZE
set /a TOTAL_SIZE=!CURRENT_SIZE! + !SIZE!
:: Überschreitet MAX_SIZE_MB?
set /a MAX_SIZE_BYTES=%MAX_SIZE_MB% * 1048576
if !TOTAL_SIZE! GEQ !MAX_SIZE_BYTES! (
set /a CURRENT_PART+=1
call :InitNextDestination
)
echo Kopiere !FILE! nach !DEST!
robocopy /njh /njs /nc /ns /np /mov /R:0 /W:0 "!SOURCE!" "!DEST!" "!FILE:%SOURCE%\=!" >nul
)
:: Aufräumen
del "%FILE_LIST%"
echo Kopiervorgang abgeschlossen.
exit /b
:: === FUNKTION: Initialisiere nächstes Zielverzeichnis ===
:InitNextDestination
set "DEST=%DEST_BASE%%CURRENT_PART%"
if not exist "!DEST!" mkdir "!DEST!"
goto :eof
:: === FUNKTION: Hole Gesamtgröße des Zielverzeichnisses in Bytes ===
:GetDirSize
setlocal
set "DIR=%~1"
set "VAR=%~2"
set "SIZE=0"
for /f "tokens=3" %%S in ('dir /s /-c "%DIR%" ^| find "Datei(en)"') do (
set "SIZE=%%S"
)
:: Entferne Punkte aus Zahlenformat (z. B. 1.234.567 → 1234567)
set "SIZE=%SIZE:.=%"
endlocal & set "%VAR%=%SIZE%"
goto :eof
Zitat Ende.
@BiberMan: Es lebe die Handarbeit!
Gruß
knurrhahn
Hallo,
Meinst du Softwaresuche - FLAC-Files (24Bit) splitten und FLAC-Dateien zerteilen? Auch hier wird dir geholfen https://www.google.com/search?client=firefox-b-e&channel=entpr&q ...
https://www.google.com/search?client=firefox-b-e&channel=entpr&q ...
https://www.reddit.com/r/sysadmin/comments/6x45p9/using_robocopy_to_move ...
https://serverfault.com/questions/652119/robocopy-from-list-txt
https://stackoverflow.com/questions/66076368/how-to-use-robocopy-for-sel ...
https://www.reddit.com/r/PowerShell/comments/fcxiq3/have_robocopy_copy_d ...
Mach dir 3 Textdateien mit den Inhalt (per Dir) und nimm die für deine 3 Robocopy Jobs mit Logs. Fertisch
Gruss,
Peter
Meinst du Softwaresuche - FLAC-Files (24Bit) splitten und FLAC-Dateien zerteilen? Auch hier wird dir geholfen https://www.google.com/search?client=firefox-b-e&channel=entpr&q ...
https://www.google.com/search?client=firefox-b-e&channel=entpr&q ...
https://www.reddit.com/r/sysadmin/comments/6x45p9/using_robocopy_to_move ...
https://serverfault.com/questions/652119/robocopy-from-list-txt
https://stackoverflow.com/questions/66076368/how-to-use-robocopy-for-sel ...
https://www.reddit.com/r/PowerShell/comments/fcxiq3/have_robocopy_copy_d ...
Mach dir 3 Textdateien mit den Inhalt (per Dir) und nimm die für deine 3 Robocopy Jobs mit Logs. Fertisch
Gruss,
Peter
Moin,
Gruß Thomas
Zitat von @kreuzberger:
Idee: Da sind 150GB Daten in einer Ordner-Baumstruktur, und die sollen auf 3 x 64GB USB Stick Platz finden.
hier gilt es natürlich zu beachten, das bei Powershell Windowsüblich als Einheit Gibibyte statt Gigabyte verwendet wird und 64 GiB nicht auf einen 64GB USB-Stick passen. Die Größe müsste also angepasst werden...Idee: Da sind 150GB Daten in einer Ordner-Baumstruktur, und die sollen auf 3 x 64GB USB Stick Platz finden.
$maxSize = 59.6GB
Gruß Thomas
Zitat von @kreuzberger:
Gäbe es da nicht die Möglichkeit, bei der Eingabe der Maximalen Teil-Größe eine Umrechnung in das Script einzubauen?
Man könnte gleich in GB rechnen. Ich würde aber zur Sicherheit noch ein wenig abziehen, da die Sticks oft etwas kleiner sind als angegeben. Daher noch mal mit 0,96 multipliziert...Gäbe es da nicht die Möglichkeit, bei der Eingabe der Maximalen Teil-Größe eine Umrechnung in das Script einzubauen?
$maxSizeGB = 64
# ========
$maxSize = $maxSizeGB * 0.96 * [math]::pow(10,9)