Rekursive Sortierung per Dateityp mit einem batchscript
Ich bräuchte mal eure Hilfe. Ich würde mir gerne ein Batch Script basteln welches folgendermaßen funktionieren sollte.
Schritt 1 Abfrage Pfad der Quelle zb D:\Quelle
Schritt 2 Abfrage Pfad des Ziels zb D:\Ziel
Schritt 3 Abfrage der zu sortierenden Dateiendungen zb .jpg .doc .docx etc.
Schritt 4
Dann Hinweis Zeile mit Echo was das Ding eigentlich vorhat zu tun.
Schritt 5 (Ist nun das Problem da ich da nicht weiß wie ich, das machen würde.)
Passieren sollte
Alles innerhalb D:\Quelle wird durchsucht und nach Dateityp in verschiedene Unterordner abgelegt innerhalb von D:\Ziel
das heißt es wird automatisch z. B. der Ordner D:\Ziel\tiff erstellt, sobald die erste tiff Datei gefunden wurde
(es sollte unabhängig von der Groß -kleinschreibung funktionieren z. B. TIFF,Tiff,tiff)
danach soll die Datei verschoben werden und mit "00000001_Originalname" fortlaufend durchnummeriert werden. Um Daten mit selbigen Namen in anderem Verzeichnis auch kopieren zu können.
Was habt ihr so für Ideen? Bzw. könnt mir Denkanstöße geben wie ich selbst auf die Lösung komme?
Würde mich über Antworten freuen.
Schritt 1 Abfrage Pfad der Quelle zb D:\Quelle
Schritt 2 Abfrage Pfad des Ziels zb D:\Ziel
Schritt 3 Abfrage der zu sortierenden Dateiendungen zb .jpg .doc .docx etc.
Schritt 4
Dann Hinweis Zeile mit Echo was das Ding eigentlich vorhat zu tun.
Schritt 5 (Ist nun das Problem da ich da nicht weiß wie ich, das machen würde.)
Passieren sollte
Alles innerhalb D:\Quelle wird durchsucht und nach Dateityp in verschiedene Unterordner abgelegt innerhalb von D:\Ziel
das heißt es wird automatisch z. B. der Ordner D:\Ziel\tiff erstellt, sobald die erste tiff Datei gefunden wurde
(es sollte unabhängig von der Groß -kleinschreibung funktionieren z. B. TIFF,Tiff,tiff)
danach soll die Datei verschoben werden und mit "00000001_Originalname" fortlaufend durchnummeriert werden. Um Daten mit selbigen Namen in anderem Verzeichnis auch kopieren zu können.
Was habt ihr so für Ideen? Bzw. könnt mir Denkanstöße geben wie ich selbst auf die Lösung komme?
Würde mich über Antworten freuen.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 1148210863
Url: https://administrator.de/forum/rekursive-sortierung-per-dateityp-mit-einem-batchscript-1148210863.html
Ausgedruckt am: 06.06.2025 um 14:06 Uhr
1 Kommentar

Heutzutage macht man das unter Winblows gleich mit der Powershell
Mehr Input dazu
Musterlösungen: Dateien verschieben abhängig vom Teil des Dateinamens
Wenn es trotz allem doch ein Batch sein muss, probier mal das
$source = read-host "Quellordner angeben"
$destination = read-host "Zielordner angeben"
$extensions = '*.tiff','*.tif','*.jpg'
if (!(Test-Path $quelle)){
write-error "Quellpfad existiert nicht!"
exit 1
}
if (!(Test-Path $source)){md $destination -Force | out-null}
$filegroups = Get-ChildItem $source -Include $extensions -Recurse | group Extension
foreach ($group in $filegroups){
$target = (md "$destination\$(($group.Name -replace '^\.'))" -Force).FullName
$group.Group | %{$cnt=0}{
move-item $_.Fullname -Destination "$target\$('{0:D8}' -f ++$cnt)_$($_.Name)" -whatif
}
}
Musterlösungen: Dateien verschieben abhängig vom Teil des Dateinamens
Wenn es trotz allem doch ein Batch sein muss, probier mal das
@echo off &setlocal enabledelayedexpansion
:start
set /p "source=Quellordner angeben:"
set /p "destination=Zielordner angeben:"
set "extensions=tiff tif jpg"
if not exist "%source%" (
echo "Quellpfad existiert nicht. Eingabe wiederholen."
goto :start
)
for /f "delims=" %%a in ('dir /b /s /a-d "%source%\*" 2^>^&1 ^|findstr /ie "%extensions%"') do (
set "ext=%%~xa"
set "ext=!ext:~1!"
set "cnt="
if not exist "%destination%\!ext!" (
md "%destination%\!ext!" >nul
set cnt=1
) else (
for /f "tokens=1 delims=_" %%b in ('dir /b /s /a-d "%destination%\!ext!\*.*" 2^>^&1') do for /f "tokens=1 delims=0" %%c in ("%%~nb") do set "cnt=%%c"
if not defined cnt (set cnt=1) else (set /a cnt+=1)
)
set "cnt=0000000!cnt!"
copy "%%a" "%destination%\!ext!\!cnt:~-8!_%%~nxa"
)