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!
Please also mark the comments that contributed to the solution of the article
Content-Key: 764933439
Url: https://administrator.de/contentid/764933439
Printed on: April 27, 2024 at 02:04 o'clock
8 Comments
Latest comment
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...
https://www.windowspro.de/script/measure-object-groesse-verzeichnissen-d ...
https://www.windowspro.de/script/measure-object-groesse-verzeichnissen-d ...
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