Toptorials Tutorials WeblogoLogobild kleinLogobild kleinToptorials Tutorials Weblogo
  • ALLE THEMEN IM ÜBERBLICK
  • YouTube
  • INFOS
    • SITEMAP
    • ÜBER TOPTORIALS
✕
            No results See all results

            Batch Grundkurs 004: Dateien nach Dateityp automatisch sortieren

            • Startseite
            • Tutorials Windows Automatisierung Batch Grundkurs
            • Batch Grundkurs 004: Dateien nach Dateityp automatisch sortieren

            Batch Grundkurs 004: Dateien nach Typ sortieren

            Worum geht es in diesem Teil?

            In diesem vierten Teil des Batch-Grundkurses sortieren wir Dateien automatisch nach Dateityp in passende Unterordner.

            Das ist ein sehr praktischer Workflow, wenn ein Ordner viele gemischte Dateien enthält. Typische Beispiele sind Download-Ordner, Scan-Ordner, Projektordner, Exportordner oder Sammelordner mit Bildern, Dokumenten, Tabellen und Archiven.

            Statt alle Dateien manuell zu verschieben, übernimmt die Batchdatei diese Arbeit automatisch.

            In diesem Teil gibt es vier Varianten:

            • eine einfache Variante für den aktuellen Ordner
            • eine Variante mit Logdatei und Zwischenablage
            • eine SendTo-Variante für einen übergebenen Ordner
            • eine SendTo-Variante mit Logdatei und Zwischenablage

            Warum ist dieses Beispiel praktisch?

            Viele Ordner werden mit der Zeit unübersichtlich. Besonders Download-Ordner oder Projektordner enthalten oft viele unterschiedliche Dateitypen.

            Dieses Skript sortiert Dateien in festgelegte Zielordner:

            01_Bilder
            02_Videos
            03_Dokumente
            04_Tabellen
            05_Archive

            Dadurch wird aus einem gemischten Ordner sehr schnell eine übersichtlichere Struktur.

            Beispiel:

            bild_001.jpg
            video_001.mp4
            rechnung.pdf
            tabelle.xlsx
            archiv.zip

            wird automatisch sortiert nach:

            01_Bilder\bild_001.jpg
            02_Videos\video_001.mp4
            03_Dokumente\rechnung.pdf
            04_Tabellen\tabelle.xlsx
            05_Archive\archiv.zip
            Vorher

            Vorher

            Batch: Nachher

            Batch: Nachher

            Hinweis zur Kursreihe

            Dieses Skript-Paket ist Teil einer größeren Vergleichsreihe. Die Aufgabe wird zuerst mit Batch umgesetzt. Später folgen passende Varianten mit PowerShell 7 und Python, damit man die unterschiedlichen Lösungswege direkt miteinander vergleichen kann.

            Batch        = einfacher Einstieg mit Windows-Bordmitteln
            PowerShell 7 = moderner und leistungsfähiger für Windows-Automatisierung
            Python       = sehr flexibel und auch für größere Tools geeignet

            Downloads zu diesem Teil

            Für diesen Teil gibt es zwei Downloads: die Batchdateien für diesen Kursteil und die gemeinsame Testumgebung für die Windows-Automatisierung.

            Batchdateien für Teil 004:

            Download Batch Grundkurs: 004_Dateien_nach_Typ_sortieren als ZIP Datei.

            Entpacken nach:

            C:\TOPTORIALS_CODE\000_Batch_Grundkurs

            Falls der Ordner noch nicht existiert, lege ihn vorher im Explorer an. Nach dem Entpacken entsteht dort automatisch:

            C:\TOPTORIALS_CODE\000_Batch_Grundkurs\004_Dateien_nach_Typ_sortieren

            Testumgebung für Windows-Automatisierung:

            Download TOPTORIALS_Testdaten_Windows_Automatisierung_V001.zip

            Entpacken nach:

            C:\TOPTORIALS_CODE\1000_TESTBEREICH

            Für den Batch-Grundkurs benenne den entpackten Ordner anschließend um in:

            TOPTORIALS_Testdaten_Windows_Automatisierung_Batch_V001

            Testumgebung zum Mitmachen

            Für diese Tutorialreihe gibt es eine vorbereitete Testumgebung. Damit kannst du die Batchdateien gefahrlos ausprobieren, ohne eigene wichtige Dateien verwenden zu müssen.

            Die Testumgebung ist sprachübergreifend aufgebaut. Das bedeutet: Die gleiche Grundstruktur kann später auch für die passenden PowerShell-7- und Python-Versionen verwendet werden.

            Empfohlener Speicherort für die ZIP-Datei:

            C:\TOPTORIALS_CODE\1000_TESTBEREICH

            Wenn du die ZIP-Datei dort entpackst, entsteht zunächst dieser Ordner:

            C:\TOPTORIALS_CODE\1000_TESTBEREICH\TOPTORIALS_Testdaten_Windows_Automatisierung_V001

            Für den Batch-Grundkurs benennen wir diesen entpackten Ordner um in:

            TOPTORIALS_Testdaten_Windows_Automatisierung_Batch_V001

            Für diesen Teil verwendest du dann den passenden Unterordner:

            C:\TOPTORIALS_CODE\1000_TESTBEREICH\TOPTORIALS_Testdaten_Windows_Automatisierung_Batch_V001\004_Dateien_nach_Typ_sortieren

            Du musst die Testumgebung aber nicht verwenden. Die Batchdateien funktionieren auch mit eigenen Ordnern. Wichtig ist nur, dass du zuerst mit Testordnern arbeitest und nicht direkt mit wichtigen Originaldateien.

            Sicherheitshinweis

            Wichtiger Hinweis:

            Die Skripte werden auf eigene Verantwortung verwendet. Teste jedes Skript zuerst in einem separaten Testordner und niemals direkt mit wichtigen Originaldateien. Einige Skripte können Dateien umbenennen, verschieben oder neue Dateien und Ordner erstellen. Lies die Hinweise auf der jeweiligen Seite sorgfältig durch und verwende zuerst immer den Testmodus, wenn ein Skript eine _test-Version enthält.

            Dieses Skript-Paket verschiebt Dateien. Deshalb ist der Testmodus hier besonders wichtig. Solange _test im Dateinamen steht, wird nur angezeigt, was passieren würde. Es werden noch keine Dateien verschoben.

            Enthaltene Skripte

            Zu diesem Teil gehören vier Batchdateien:

            004_dateien_nach_typ_sortieren_test.bat
            004_dateien_nach_typ_sortieren_mit_log_und_clipboard_test.bat
            004_dateien_nach_typ_sortieren_sendto_test.bat
            004_dateien_nach_typ_sortieren_sendto_mit_log_und_clipboard_test.bat

            Welche Variante brauche ich?

            • Einfache Variante: Wenn du Dateien im aktuellen Ordner nach Typ sortieren möchtest.
            • Mit Log und Zwischenablage: Wenn du zusätzlich ein Protokoll der Aktion haben möchtest.
            • SendTo-Variante: Wenn du einen Ordner per Rechtsklick über Senden an übergeben möchtest.
            • SendTo mit Log und Zwischenablage: Wenn du einen übergebenen Ordner sortieren und zusätzlich ein Protokoll in Datei und Zwischenablage haben möchtest.

            Welche Dateitypen werden sortiert?

            Die Skripte sortieren die Dateien in fünf Zielordner.

            Zielordner Dateiendungen
            01_Bilder .jpg, .jpeg, .png, .gif, .webp
            02_Videos .mp4, .mov, .mkv, .avi
            03_Dokumente .pdf, .docx, .txt
            04_Tabellen .xlsx, .xls, .csv
            05_Archive .zip, .rar, .7z

            Dateien mit anderen Endungen werden nicht sortiert und bleiben im Ordner liegen.

            Variante 1: Dateien im aktuellen Ordner sortieren

            Die Datei heißt:

            004_dateien_nach_typ_sortieren_test.bat

            Diese Variante wird in den Ordner kopiert, dessen Dateien sortiert werden sollen. Im Testmodus wird nur angezeigt, welche Dateien in welche Unterordner verschoben würden.

            Wenn du die vorbereitete Testumgebung verwendest, kannst du zum Beispiel einen passenden Unterordner aus Teil 004 verwenden:

            C:\TOPTORIALS_CODE\1000_TESTBEREICH\TOPTORIALS_Testdaten_Windows_Automatisierung_Batch_V001\004_Dateien_nach_Typ_sortieren

            Der komplette Code der einfachen Variante

            @echo off
            REM ============================================================
            REM TOPTORIALS OFFICE - Batch Grundkurs
            REM Script: 004_dateien_nach_typ_sortieren_test.bat
            REM Beschreibung: Sortiert Dateien nach Dateityp in Unterordner.
            REM Autor: Chris
            REM YouTube: https://www.youtube.com/@TOPTORIALS-OFFICE
            REM Webseite: https://www.toptorials.com
            REM Version: 1.0
            REM Stand: 2026-06-27
            REM
            REM Hinweis:
            REM Solange _test im Dateinamen steht, wird nur eine Vorschau angezeigt.
            REM Fuer die echte Ausfuehrung _test aus dem Dateinamen entfernen.
            REM ============================================================
            echo.
            set "TESTMODUS=NEIN"
            set /a ANZAHL=0
            set /a UEBERSPRUNGEN=0
            
            echo %~n0 | find /i "_test" >nul
            if not errorlevel 1 set "TESTMODUS=JA"
            
            echo Dateien werden nach Typ sortiert...
            echo.
            echo Testmodus: %TESTMODUS%
            echo.
            
            if "%TESTMODUS%"=="JA" goto start
            
            echo ACHTUNG: Dieses Skript wird Dateien wirklich verschieben.
            echo.
            set /p "ANTWORT=Zum Fortfahren JA eingeben: "
            
            if /i "%ANTWORT%"=="JA" goto start
            
            echo.
            echo Abgebrochen.
            echo.
            pause
            exit /b
            
            :start
            echo.
            
            if not exist "01_Bilder" mkdir "01_Bilder"
            if not exist "02_Videos" mkdir "02_Videos"
            if not exist "03_Dokumente" mkdir "03_Dokumente"
            if not exist "04_Tabellen" mkdir "04_Tabellen"
            if not exist "05_Archive" mkdir "05_Archive"
            
            for %%f in (*.jpg *.jpeg *.png *.gif *.webp) do (
                if exist "%%f" (
                    if "%TESTMODUS%"=="JA" (
                        if exist "01_Bilder\%%~nxf" (
                            echo WUERDE UEBERSPRINGEN: "%%f" - Datei existiert bereits in "01_Bilder"
                            set /a UEBERSPRUNGEN+=1
                        ) else (
                            echo WUERDE VERSCHIEBEN: "%%f" nach "01_Bilder"
                            set /a ANZAHL+=1
                        )
                    ) else (
                        if exist "01_Bilder\%%~nxf" (
                            echo UEBERSPRUNGEN: "%%f" - Datei existiert bereits in "01_Bilder"
                            set /a UEBERSPRUNGEN+=1
                        ) else (
                            move "%%f" "01_Bilder\" >nul
                            echo VERSCHOBEN: "%%f" nach "01_Bilder"
                            set /a ANZAHL+=1
                        )
                    )
                )
            )
            
            for %%f in (*.mp4 *.mov *.mkv *.avi) do (
                if exist "%%f" (
                    if "%TESTMODUS%"=="JA" (
                        if exist "02_Videos\%%~nxf" (
                            echo WUERDE UEBERSPRINGEN: "%%f" - Datei existiert bereits in "02_Videos"
                            set /a UEBERSPRUNGEN+=1
                        ) else (
                            echo WUERDE VERSCHIEBEN: "%%f" nach "02_Videos"
                            set /a ANZAHL+=1
                        )
                    ) else (
                        if exist "02_Videos\%%~nxf" (
                            echo UEBERSPRUNGEN: "%%f" - Datei existiert bereits in "02_Videos"
                            set /a UEBERSPRUNGEN+=1
                        ) else (
                            move "%%f" "02_Videos\" >nul
                            echo VERSCHOBEN: "%%f" nach "02_Videos"
                            set /a ANZAHL+=1
                        )
                    )
                )
            )
            
            for %%f in (*.pdf *.docx *.txt) do (
                if exist "%%f" (
                    if "%TESTMODUS%"=="JA" (
                        if exist "03_Dokumente\%%~nxf" (
                            echo WUERDE UEBERSPRINGEN: "%%f" - Datei existiert bereits in "03_Dokumente"
                            set /a UEBERSPRUNGEN+=1
                        ) else (
                            echo WUERDE VERSCHIEBEN: "%%f" nach "03_Dokumente"
                            set /a ANZAHL+=1
                        )
                    ) else (
                        if exist "03_Dokumente\%%~nxf" (
                            echo UEBERSPRUNGEN: "%%f" - Datei existiert bereits in "03_Dokumente"
                            set /a UEBERSPRUNGEN+=1
                        ) else (
                            move "%%f" "03_Dokumente\" >nul
                            echo VERSCHOBEN: "%%f" nach "03_Dokumente"
                            set /a ANZAHL+=1
                        )
                    )
                )
            )
            
            for %%f in (*.xlsx *.xls *.csv) do (
                if exist "%%f" (
                    if "%TESTMODUS%"=="JA" (
                        if exist "04_Tabellen\%%~nxf" (
                            echo WUERDE UEBERSPRINGEN: "%%f" - Datei existiert bereits in "04_Tabellen"
                            set /a UEBERSPRUNGEN+=1
                        ) else (
                            echo WUERDE VERSCHIEBEN: "%%f" nach "04_Tabellen"
                            set /a ANZAHL+=1
                        )
                    ) else (
                        if exist "04_Tabellen\%%~nxf" (
                            echo UEBERSPRUNGEN: "%%f" - Datei existiert bereits in "04_Tabellen"
                            set /a UEBERSPRUNGEN+=1
                        ) else (
                            move "%%f" "04_Tabellen\" >nul
                            echo VERSCHOBEN: "%%f" nach "04_Tabellen"
                            set /a ANZAHL+=1
                        )
                    )
                )
            )
            
            for %%f in (*.zip *.rar *.7z) do (
                if exist "%%f" (
                    if "%TESTMODUS%"=="JA" (
                        if exist "05_Archive\%%~nxf" (
                            echo WUERDE UEBERSPRINGEN: "%%f" - Datei existiert bereits in "05_Archive"
                            set /a UEBERSPRUNGEN+=1
                        ) else (
                            echo WUERDE VERSCHIEBEN: "%%f" nach "05_Archive"
                            set /a ANZAHL+=1
                        )
                    ) else (
                        if exist "05_Archive\%%~nxf" (
                            echo UEBERSPRUNGEN: "%%f" - Datei existiert bereits in "05_Archive"
                            set /a UEBERSPRUNGEN+=1
                        ) else (
                            move "%%f" "05_Archive\" >nul
                            echo VERSCHOBEN: "%%f" nach "05_Archive"
                            set /a ANZAHL+=1
                        )
                    )
                )
            )
            
            echo.
            echo Fertig.
            echo.
            
            if "%TESTMODUS%"=="JA" (
                echo Anzahl Dateien, die verschoben wuerden: %ANZAHL%
                echo Anzahl Dateien, die uebersprungen wuerden: %UEBERSPRUNGEN%
                echo.
                echo Es wurde noch nichts verschoben.
                echo Wenn alles richtig aussieht, entferne _test aus dem Dateinamen.
            ) else (
                echo Gesamt verschoben: %ANZAHL% Datei(en)
                echo Uebersprungen wegen Namenskonflikt: %UEBERSPRUNGEN% Datei(en)
            )
            
            echo.
            pause

            Code der einfachen Variante erklärt

            Testmodus erkennen

            set "TESTMODUS=NEIN"
            
            echo %~n0 | find /i "_test" >nul
            if not errorlevel 1 set "TESTMODUS=JA"

            Zu Beginn wird der Testmodus vorbereitet. Standardmäßig steht die Variable TESTMODUS auf NEIN.

            Danach wird geprüft, ob der Dateiname der Batchdatei den Text _test enthält. Wenn das der Fall ist, wird TESTMODUS auf JA gesetzt.

            Dadurch entscheidet der Dateiname, ob nur eine Vorschau angezeigt wird oder ob Dateien wirklich verschoben werden.

            Sicherheitsabfrage bei echter Ausführung

            if "%TESTMODUS%"=="JA" goto start
            
            echo ACHTUNG: Dieses Skript wird Dateien wirklich verschieben.
            echo.
            set /p "ANTWORT=Zum Fortfahren JA eingeben: "
            
            if /i "%ANTWORT%"=="JA" goto start

            Wenn das Skript nicht im Testmodus läuft, erscheint zusätzlich eine Sicherheitsabfrage. Erst wenn wirklich JA eingegeben wird, startet die echte Ausführung.

            Das schützt davor, dass Dateien versehentlich verschoben werden.

            Zielordner erstellen

            if not exist "01_Bilder" mkdir "01_Bilder"
            if not exist "02_Videos" mkdir "02_Videos"
            if not exist "03_Dokumente" mkdir "03_Dokumente"
            if not exist "04_Tabellen" mkdir "04_Tabellen"
            if not exist "05_Archive" mkdir "05_Archive"

            Diese Zeilen prüfen, ob die Zielordner bereits vorhanden sind. Falls nicht, werden sie mit mkdir erstellt.

            Bereits vorhandene Zielordner werden nicht gelöscht und nicht überschrieben.

            Dateitypen durchlaufen

            for %%f in (*.jpg *.jpeg *.png *.gif *.webp) do (
                ...
            )

            Mit for werden passende Dateien durchlaufen. In diesem Beispiel werden alle Bilddateien mit den angegebenen Dateiendungen verarbeitet.

            Für jede Dateigruppe gibt es eine eigene Schleife:

            • Bilder
            • Videos
            • Dokumente
            • Tabellen
            • Archive

            Namenskonflikte verhindern

            if exist "01_Bilder\%%~nxf" (
                echo WUERDE UEBERSPRINGEN: "%%f" - Datei existiert bereits in "01_Bilder"
            )

            Bevor eine Datei verschoben wird, prüft das Skript, ob im Zielordner bereits eine Datei mit gleichem Namen existiert.

            %%~nxf steht für den Dateinamen inklusive Erweiterung.

            Wenn eine gleichnamige Datei im Zielordner vorhanden ist, wird die Datei übersprungen. Dadurch wird nichts überschrieben.

            Dateien verschieben

            move "%%f" "01_Bilder\" >nul

            Wenn das Skript nicht im Testmodus läuft und kein Namenskonflikt besteht, wird die Datei mit move in den Zielordner verschoben.

            Das >nul unterdrückt die Standardausgabe des move-Befehls, damit nur die eigene Meldung des Skripts sichtbar bleibt.

            Zähler für verschobene und übersprungene Dateien

            set /a ANZAHL+=1
            set /a UEBERSPRUNGEN+=1

            Mit set /a werden Zahlen berechnet. Das Skript zählt, wie viele Dateien verschoben würden oder verschoben wurden und wie viele Dateien wegen Namenskonflikten übersprungen wurden.

            Variante 2: Dateien sortieren mit Logdatei und Zwischenablage

            Die Datei heißt:

            004_dateien_nach_typ_sortieren_mit_log_und_clipboard_test.bat

            Diese Variante arbeitet wie die einfache Variante, erstellt aber zusätzlich eine Logdatei und kopiert deren Inhalt in die Zwischenablage.

            Die Logdatei erhält einen Zeitstempel im Dateinamen, zum Beispiel:

            sortierprotokoll_2026-06-27_15-30-45.log

            Der komplette Code der Log-Variante

            @echo off
            REM ============================================================
            REM TOPTORIALS OFFICE - Batch Grundkurs
            REM Script: 004_dateien_nach_typ_sortieren_mit_log_und_clipboard_test.bat
            REM Beschreibung: Sortiert Dateien nach Dateityp in Unterordner, schreibt ein Log und kopiert es in die Zwischenablage.
            REM Autor: Chris
            REM YouTube: https://www.youtube.com/@TOPTORIALS-OFFICE
            REM Webseite: https://www.toptorials.com
            REM Version: 1.0
            REM Stand: 2026-06-27
            REM
            REM Hinweis:
            REM Solange _test im Dateinamen steht, wird nur eine Vorschau angezeigt.
            REM Fuer die echte Ausfuehrung _test aus dem Dateinamen entfernen.
            REM ============================================================
            echo.
            set "TESTMODUS=NEIN"
            set /a ANZAHL=0
            set /a UEBERSPRUNGEN=0
            
            echo %~n0 | find /i "_test" >nul
            if not errorlevel 1 set "TESTMODUS=JA"
            
            set "DATUM=%date:~-4%-%date:~3,2%-%date:~0,2%"
            set "ZEIT=%time:~0,2%-%time:~3,2%-%time:~6,2%"
            set "ZEIT=%ZEIT: =0%"
            set "LOGDATEI=sortierprotokoll_%DATUM%_%ZEIT%.log"
            
            echo Dateien werden nach Typ sortiert...>>"%LOGDATEI%"
            echo Testmodus: %TESTMODUS%>>"%LOGDATEI%"
            echo Logdatei: %LOGDATEI%>>"%LOGDATEI%"
            echo.>>"%LOGDATEI%"
            
            echo Dateien werden nach Typ sortiert...
            echo.
            echo Testmodus: %TESTMODUS%
            echo Logdatei: %LOGDATEI%
            echo.
            
            if "%TESTMODUS%"=="JA" goto start
            
            echo ACHTUNG: Dieses Skript wird Dateien wirklich verschieben.
            echo.
            set /p "ANTWORT=Zum Fortfahren JA eingeben: "
            
            if /i "%ANTWORT%"=="JA" goto start
            
            echo.
            echo Abgebrochen.
            echo.
            
            echo Abgebrochen.>>"%LOGDATEI%"
            type "%LOGDATEI%" | clip
            
            pause
            exit /b
            
            :start
            echo.
            
            if not exist "01_Bilder" mkdir "01_Bilder"
            if not exist "02_Videos" mkdir "02_Videos"
            if not exist "03_Dokumente" mkdir "03_Dokumente"
            if not exist "04_Tabellen" mkdir "04_Tabellen"
            if not exist "05_Archive" mkdir "05_Archive"
            
            for %%f in (*.jpg *.jpeg *.png *.gif *.webp) do (
                if exist "%%f" (
                    if "%TESTMODUS%"=="JA" (
                        if exist "01_Bilder\%%~nxf" (
                            echo WUERDE UEBERSPRINGEN: "%%f" - Datei existiert bereits in "01_Bilder"
                            echo WUERDE UEBERSPRINGEN: "%%f" - Datei existiert bereits in "01_Bilder">>"%LOGDATEI%"
                            set /a UEBERSPRUNGEN+=1
                        ) else (
                            echo WUERDE VERSCHIEBEN: "%%f" nach "01_Bilder"
                            echo WUERDE VERSCHIEBEN: "%%f" nach "01_Bilder">>"%LOGDATEI%"
                            set /a ANZAHL+=1
                        )
                    ) else (
                        if exist "01_Bilder\%%~nxf" (
                            echo UEBERSPRUNGEN: "%%f" - Datei existiert bereits in "01_Bilder"
                            echo UEBERSPRUNGEN: "%%f" - Datei existiert bereits in "01_Bilder">>"%LOGDATEI%"
                            set /a UEBERSPRUNGEN+=1
                        ) else (
                            move "%%f" "01_Bilder\" >nul
                            echo VERSCHOBEN: "%%f" nach "01_Bilder"
                            echo VERSCHOBEN: "%%f" nach "01_Bilder">>"%LOGDATEI%"
                            set /a ANZAHL+=1
                        )
                    )
                )
            )
            
            for %%f in (*.mp4 *.mov *.mkv *.avi) do (
                if exist "%%f" (
                    if "%TESTMODUS%"=="JA" (
                        if exist "02_Videos\%%~nxf" (
                            echo WUERDE UEBERSPRINGEN: "%%f" - Datei existiert bereits in "02_Videos"
                            echo WUERDE UEBERSPRINGEN: "%%f" - Datei existiert bereits in "02_Videos">>"%LOGDATEI%"
                            set /a UEBERSPRUNGEN+=1
                        ) else (
                            echo WUERDE VERSCHIEBEN: "%%f" nach "02_Videos"
                            echo WUERDE VERSCHIEBEN: "%%f" nach "02_Videos">>"%LOGDATEI%"
                            set /a ANZAHL+=1
                        )
                    ) else (
                        if exist "02_Videos\%%~nxf" (
                            echo UEBERSPRUNGEN: "%%f" - Datei existiert bereits in "02_Videos"
                            echo UEBERSPRUNGEN: "%%f" - Datei existiert bereits in "02_Videos">>"%LOGDATEI%"
                            set /a UEBERSPRUNGEN+=1
                        ) else (
                            move "%%f" "02_Videos\" >nul
                            echo VERSCHOBEN: "%%f" nach "02_Videos"
                            echo VERSCHOBEN: "%%f" nach "02_Videos">>"%LOGDATEI%"
                            set /a ANZAHL+=1
                        )
                    )
                )
            )
            
            for %%f in (*.pdf *.docx *.txt) do (
                if exist "%%f" (
                    if "%TESTMODUS%"=="JA" (
                        if exist "03_Dokumente\%%~nxf" (
                            echo WUERDE UEBERSPRINGEN: "%%f" - Datei existiert bereits in "03_Dokumente"
                            echo WUERDE UEBERSPRINGEN: "%%f" - Datei existiert bereits in "03_Dokumente">>"%LOGDATEI%"
                            set /a UEBERSPRUNGEN+=1
                        ) else (
                            echo WUERDE VERSCHIEBEN: "%%f" nach "03_Dokumente"
                            echo WUERDE VERSCHIEBEN: "%%f" nach "03_Dokumente">>"%LOGDATEI%"
                            set /a ANZAHL+=1
                        )
                    ) else (
                        if exist "03_Dokumente\%%~nxf" (
                            echo UEBERSPRUNGEN: "%%f" - Datei existiert bereits in "03_Dokumente"
                            echo UEBERSPRUNGEN: "%%f" - Datei existiert bereits in "03_Dokumente">>"%LOGDATEI%"
                            set /a UEBERSPRUNGEN+=1
                        ) else (
                            move "%%f" "03_Dokumente\" >nul
                            echo VERSCHOBEN: "%%f" nach "03_Dokumente"
                            echo VERSCHOBEN: "%%f" nach "03_Dokumente">>"%LOGDATEI%"
                            set /a ANZAHL+=1
                        )
                    )
                )
            )
            
            for %%f in (*.xlsx *.xls *.csv) do (
                if exist "%%f" (
                    if "%TESTMODUS%"=="JA" (
                        if exist "04_Tabellen\%%~nxf" (
                            echo WUERDE UEBERSPRINGEN: "%%f" - Datei existiert bereits in "04_Tabellen"
                            echo WUERDE UEBERSPRINGEN: "%%f" - Datei existiert bereits in "04_Tabellen">>"%LOGDATEI%"
                            set /a UEBERSPRUNGEN+=1
                        ) else (
                            echo WUERDE VERSCHIEBEN: "%%f" nach "04_Tabellen"
                            echo WUERDE VERSCHIEBEN: "%%f" nach "04_Tabellen">>"%LOGDATEI%"
                            set /a ANZAHL+=1
                        )
                    ) else (
                        if exist "04_Tabellen\%%~nxf" (
                            echo UEBERSPRUNGEN: "%%f" - Datei existiert bereits in "04_Tabellen"
                            echo UEBERSPRUNGEN: "%%f" - Datei existiert bereits in "04_Tabellen">>"%LOGDATEI%"
                            set /a UEBERSPRUNGEN+=1
                        ) else (
                            move "%%f" "04_Tabellen\" >nul
                            echo VERSCHOBEN: "%%f" nach "04_Tabellen"
                            echo VERSCHOBEN: "%%f" nach "04_Tabellen">>"%LOGDATEI%"
                            set /a ANZAHL+=1
                        )
                    )
                )
            )
            
            for %%f in (*.zip *.rar *.7z) do (
                if exist "%%f" (
                    if "%TESTMODUS%"=="JA" (
                        if exist "05_Archive\%%~nxf" (
                            echo WUERDE UEBERSPRINGEN: "%%f" - Datei existiert bereits in "05_Archive"
                            echo WUERDE UEBERSPRINGEN: "%%f" - Datei existiert bereits in "05_Archive">>"%LOGDATEI%"
                            set /a UEBERSPRUNGEN+=1
                        ) else (
                            echo WUERDE VERSCHIEBEN: "%%f" nach "05_Archive"
                            echo WUERDE VERSCHIEBEN: "%%f" nach "05_Archive">>"%LOGDATEI%"
                            set /a ANZAHL+=1
                        )
                    ) else (
                        if exist "05_Archive\%%~nxf" (
                            echo UEBERSPRUNGEN: "%%f" - Datei existiert bereits in "05_Archive"
                            echo UEBERSPRUNGEN: "%%f" - Datei existiert bereits in "05_Archive">>"%LOGDATEI%"
                            set /a UEBERSPRUNGEN+=1
                        ) else (
                            move "%%f" "05_Archive\" >nul
                            echo VERSCHOBEN: "%%f" nach "05_Archive"
                            echo VERSCHOBEN: "%%f" nach "05_Archive">>"%LOGDATEI%"
                            set /a ANZAHL+=1
                        )
                    )
                )
            )
            
            echo.>>"%LOGDATEI%"
            echo Fertig.>>"%LOGDATEI%"
            
            if "%TESTMODUS%"=="JA" (
                echo Anzahl Dateien, die verschoben wuerden: %ANZAHL%>>"%LOGDATEI%"
                echo Anzahl Dateien, die uebersprungen wuerden: %UEBERSPRUNGEN%>>"%LOGDATEI%"
                echo Es wurde noch nichts verschoben.>>"%LOGDATEI%"
                echo Wenn alles richtig aussieht, entferne _test aus dem Dateinamen.>>"%LOGDATEI%"
            ) else (
                echo Gesamt verschoben: %ANZAHL% Dateien>>"%LOGDATEI%"
                echo Uebersprungen wegen Namenskonflikt: %UEBERSPRUNGEN% Dateien>>"%LOGDATEI%"
            )
            
            type "%LOGDATEI%" | clip
            
            echo.
            echo Fertig.
            echo Das Protokoll wurde erstellt:
            echo %LOGDATEI%
            echo.
            echo Der Inhalt wurde zusaetzlich in die Zwischenablage kopiert.
            echo.
            
            if "%TESTMODUS%"=="JA" (
                echo Anzahl Dateien, die verschoben wuerden: %ANZAHL%
                echo Anzahl Dateien, die uebersprungen wuerden: %UEBERSPRUNGEN%
                echo.
                echo Es wurde noch nichts verschoben.
                echo Wenn alles richtig aussieht, entferne _test aus dem Dateinamen.
            ) else (
                echo Gesamt verschoben: %ANZAHL% Dateien
                echo Uebersprungen wegen Namenskonflikt: %UEBERSPRUNGEN% Dateien
            )
            
            echo.
            pause

            Wichtige Unterschiede der Log-Variante

            Zeitstempel für die Logdatei

            set "DATUM=%date:~-4%-%date:~3,2%-%date:~0,2%"
            set "ZEIT=%time:~0,2%-%time:~3,2%-%time:~6,2%"
            set "ZEIT=%ZEIT: =0%"
            set "LOGDATEI=sortierprotokoll_%DATUM%_%ZEIT%.log"

            Diese Zeilen erzeugen einen Zeitstempel aus Datum und Uhrzeit. Daraus wird der Name der Logdatei gebildet.

            %ZEIT: =0% ersetzt ein mögliches Leerzeichen in der Uhrzeit durch eine Null. Das ist wichtig, wenn die Stunde einstellig ist.

            In die Logdatei schreiben

            echo Dateien werden nach Typ sortiert...>>"%LOGDATEI%"

            Mit >> wird Text an eine Datei angehängt. Die Log-Variante schreibt wichtige Meldungen sowohl ins Fenster als auch in die Logdatei.

            Logdatei in die Zwischenablage kopieren

            type "%LOGDATEI%" | clip

            Am Ende wird die Logdatei mit type gelesen und mit clip in die Windows-Zwischenablage kopiert.

            Variante 3: SendTo-Variante für einen übergebenen Ordner

            Die Datei heißt:

            004_dateien_nach_typ_sortieren_sendto_test.bat

            Diese Variante wird nicht in den Zielordner kopiert, sondern über das Windows-Menü Senden an verwendet.

            Man markiert im Explorer einen Ordner und übergibt ihn per Rechtsklick > Senden an an die Batchdatei. Die Dateien direkt in diesem Ordner werden dann nach Typ sortiert.

            Unterordner werden nicht rekursiv durchsucht.

            Der komplette Code der SendTo-Variante

            @echo off
            REM ============================================================
            REM TOPTORIALS OFFICE - Batch Grundkurs
            REM Script: 004_dateien_nach_typ_sortieren_sendto_test.bat
            REM Beschreibung: Sortiert Dateien eines uebergebenen Ordners nach Dateityp in Unterordner.
            REM Autor: Chris
            REM YouTube: https://www.youtube.com/@TOPTORIALS-OFFICE
            REM Webseite: https://www.toptorials.com
            REM Version: 1.0
            REM Stand: 2026-06-27
            REM
            REM Hinweis:
            REM Solange _test im Dateinamen steht, wird nur eine Vorschau angezeigt.
            REM Fuer die echte Ausfuehrung _test aus dem Dateinamen entfernen.
            REM ============================================================
            echo.
            set "TESTMODUS=NEIN"
            set /a ANZAHL=0
            set /a UEBERSPRUNGEN=0
            
            echo %~n0 | find /i "_test" >nul
            if not errorlevel 1 set "TESTMODUS=JA"
            
            if "%~1"=="" (
                echo Bitte sende einen Ordner an dieses Skript.
                echo.
                echo Du kannst zum Beispiel einen Ordner rechts anklicken
                echo und dann Senden an verwenden.
                echo.
                pause
                exit /b
            )
            
            if not exist "%~1\" (
                echo Der uebergebene Pfad ist kein Ordner:
                echo %~1
                echo.
                pause
                exit /b
            )
            
            set "ZIEL=%~1"
            
            echo Dateien werden nach Typ sortiert in:
            echo %ZIEL%
            echo.
            echo Testmodus: %TESTMODUS%
            echo.
            
            if "%TESTMODUS%"=="JA" goto start
            
            echo ACHTUNG: Dieses Skript wird Dateien im Zielordner wirklich verschieben.
            echo.
            set /p "ANTWORT=Zum Fortfahren JA eingeben: "
            
            if /i "%ANTWORT%"=="JA" goto start
            
            echo.
            echo Abgebrochen.
            echo.
            pause
            exit /b
            
            :start
            echo.
            
            if not exist "%ZIEL%\01_Bilder" mkdir "%ZIEL%\01_Bilder"
            if not exist "%ZIEL%\02_Videos" mkdir "%ZIEL%\02_Videos"
            if not exist "%ZIEL%\03_Dokumente" mkdir "%ZIEL%\03_Dokumente"
            if not exist "%ZIEL%\04_Tabellen" mkdir "%ZIEL%\04_Tabellen"
            if not exist "%ZIEL%\05_Archive" mkdir "%ZIEL%\05_Archive"
            
            for %%f in ("%ZIEL%\*.jpg" "%ZIEL%\*.jpeg" "%ZIEL%\*.png" "%ZIEL%\*.gif" "%ZIEL%\*.webp") do (
                if exist "%%~f" (
                    if "%TESTMODUS%"=="JA" (
                        if exist "%ZIEL%\01_Bilder\%%~nxf" (
                            echo WUERDE UEBERSPRINGEN: "%%~nxf" - Datei existiert bereits in "01_Bilder"
                            set /a UEBERSPRUNGEN+=1
                        ) else (
                            echo WUERDE VERSCHIEBEN: "%%~nxf" nach "01_Bilder"
                            set /a ANZAHL+=1
                        )
                    ) else (
                        if exist "%ZIEL%\01_Bilder\%%~nxf" (
                            echo UEBERSPRUNGEN: "%%~nxf" - Datei existiert bereits in "01_Bilder"
                            set /a UEBERSPRUNGEN+=1
                        ) else (
                            move "%%~f" "%ZIEL%\01_Bilder\" >nul
                            echo VERSCHOBEN: "%%~nxf" nach "01_Bilder"
                            set /a ANZAHL+=1
                        )
                    )
                )
            )
            
            for %%f in ("%ZIEL%\*.mp4" "%ZIEL%\*.mov" "%ZIEL%\*.mkv" "%ZIEL%\*.avi") do (
                if exist "%%~f" (
                    if "%TESTMODUS%"=="JA" (
                        if exist "%ZIEL%\02_Videos\%%~nxf" (
                            echo WUERDE UEBERSPRINGEN: "%%~nxf" - Datei existiert bereits in "02_Videos"
                            set /a UEBERSPRUNGEN+=1
                        ) else (
                            echo WUERDE VERSCHIEBEN: "%%~nxf" nach "02_Videos"
                            set /a ANZAHL+=1
                        )
                    ) else (
                        if exist "%ZIEL%\02_Videos\%%~nxf" (
                            echo UEBERSPRUNGEN: "%%~nxf" - Datei existiert bereits in "02_Videos"
                            set /a UEBERSPRUNGEN+=1
                        ) else (
                            move "%%~f" "%ZIEL%\02_Videos\" >nul
                            echo VERSCHOBEN: "%%~nxf" nach "02_Videos"
                            set /a ANZAHL+=1
                        )
                    )
                )
            )
            
            for %%f in ("%ZIEL%\*.pdf" "%ZIEL%\*.docx" "%ZIEL%\*.txt") do (
                if exist "%%~f" (
                    if "%TESTMODUS%"=="JA" (
                        if exist "%ZIEL%\03_Dokumente\%%~nxf" (
                            echo WUERDE UEBERSPRINGEN: "%%~nxf" - Datei existiert bereits in "03_Dokumente"
                            set /a UEBERSPRUNGEN+=1
                        ) else (
                            echo WUERDE VERSCHIEBEN: "%%~nxf" nach "03_Dokumente"
                            set /a ANZAHL+=1
                        )
                    ) else (
                        if exist "%ZIEL%\03_Dokumente\%%~nxf" (
                            echo UEBERSPRUNGEN: "%%~nxf" - Datei existiert bereits in "03_Dokumente"
                            set /a UEBERSPRUNGEN+=1
                        ) else (
                            move "%%~f" "%ZIEL%\03_Dokumente\" >nul
                            echo VERSCHOBEN: "%%~nxf" nach "03_Dokumente"
                            set /a ANZAHL+=1
                        )
                    )
                )
            )
            
            for %%f in ("%ZIEL%\*.xlsx" "%ZIEL%\*.xls" "%ZIEL%\*.csv") do (
                if exist "%%~f" (
                    if "%TESTMODUS%"=="JA" (
                        if exist "%ZIEL%\04_Tabellen\%%~nxf" (
                            echo WUERDE UEBERSPRINGEN: "%%~nxf" - Datei existiert bereits in "04_Tabellen"
                            set /a UEBERSPRUNGEN+=1
                        ) else (
                            echo WUERDE VERSCHIEBEN: "%%~nxf" nach "04_Tabellen"
                            set /a ANZAHL+=1
                        )
                    ) else (
                        if exist "%ZIEL%\04_Tabellen\%%~nxf" (
                            echo UEBERSPRUNGEN: "%%~nxf" - Datei existiert bereits in "04_Tabellen"
                            set /a UEBERSPRUNGEN+=1
                        ) else (
                            move "%%~f" "%ZIEL%\04_Tabellen\" >nul
                            echo VERSCHOBEN: "%%~nxf" nach "04_Tabellen"
                            set /a ANZAHL+=1
                        )
                    )
                )
            )
            
            for %%f in ("%ZIEL%\*.zip" "%ZIEL%\*.rar" "%ZIEL%\*.7z") do (
                if exist "%%~f" (
                    if "%TESTMODUS%"=="JA" (
                        if exist "%ZIEL%\05_Archive\%%~nxf" (
                            echo WUERDE UEBERSPRINGEN: "%%~nxf" - Datei existiert bereits in "05_Archive"
                            set /a UEBERSPRUNGEN+=1
                        ) else (
                            echo WUERDE VERSCHIEBEN: "%%~nxf" nach "05_Archive"
                            set /a ANZAHL+=1
                        )
                    ) else (
                        if exist "%ZIEL%\05_Archive\%%~nxf" (
                            echo UEBERSPRUNGEN: "%%~nxf" - Datei existiert bereits in "05_Archive"
                            set /a UEBERSPRUNGEN+=1
                        ) else (
                            move "%%~f" "%ZIEL%\05_Archive\" >nul
                            echo VERSCHOBEN: "%%~nxf" nach "05_Archive"
                            set /a ANZAHL+=1
                        )
                    )
                )
            )
            
            echo.
            echo Fertig.
            echo.
            
            if "%TESTMODUS%"=="JA" (
                echo Anzahl Dateien, die verschoben wuerden: %ANZAHL%
                echo Anzahl Dateien, die uebersprungen wuerden: %UEBERSPRUNGEN%
                echo.
                echo Es wurde noch nichts verschoben.
                echo Wenn alles richtig aussieht, entferne _test aus dem Dateinamen.
            ) else (
                echo Gesamt verschoben: %ANZAHL% Dateien
                echo Uebersprungen wegen Namenskonflikt: %UEBERSPRUNGEN% Dateien
            )
            
            echo.
            pause

            Wichtige Unterschiede der SendTo-Variante

            Prüfen, ob ein Ordner übergeben wurde

            if "%~1"=="" (
                echo Bitte sende einen Ordner an dieses Skript.
                echo.
                pause
                exit /b
            )

            %~1 steht für den ersten übergebenen Parameter. Bei SendTo ist das der Ordner, der im Explorer markiert wurde.

            Wenn kein Ordner übergeben wurde, zeigt das Skript einen Hinweis an und beendet sich.

            Prüfen, ob es wirklich ein Ordner ist

            if not exist "%~1\" (
                echo Der uebergebene Pfad ist kein Ordner:
                echo %~1
                echo.
                pause
                exit /b
            )

            Diese Prüfung stellt sicher, dass der übergebene Pfad ein Ordner ist. Der Backslash am Ende hilft dabei, gezielt auf einen Ordner zu prüfen.

            Zielordner speichern

            set "ZIEL=%~1"

            Der übergebene Ordner wird in der Variable ZIEL gespeichert. Danach arbeitet das Skript mit %ZIEL%.

            Dateien im Zielordner sortieren

            for %%f in ("%ZIEL%\*.jpg" "%ZIEL%\*.jpeg" "%ZIEL%\*.png" "%ZIEL%\*.gif" "%ZIEL%\*.webp") do (
                ...
            )

            Die SendTo-Variante arbeitet nicht mit Dateien im aktuellen Ordner, sondern mit Dateien im übergebenen Zielordner.

            Variante 4: SendTo mit Logdatei und Zwischenablage

            Die Datei heißt:

            004_dateien_nach_typ_sortieren_sendto_mit_log_und_clipboard_test.bat

            Diese Variante kombiniert die SendTo-Funktion mit einer Logdatei und der Zwischenablage.

            Sie ist besonders praktisch, wenn man einen Ordner per Rechtsklick sortieren möchte und danach direkt ein Protokoll der Aktionen haben will.

            Der komplette Code der SendTo-Log-Variante

            @echo off
            REM ============================================================
            REM TOPTORIALS OFFICE - Batch Grundkurs
            REM Script: 004_dateien_nach_typ_sortieren_sendto_mit_log_und_clipboard_test.bat
            REM Beschreibung: Sortiert Dateien eines uebergebenen Ordners nach Dateityp, schreibt ein Log und kopiert es in die Zwischenablage.
            REM Autor: Chris
            REM YouTube: https://www.youtube.com/@TOPTORIALS-OFFICE
            REM Webseite: https://www.toptorials.com
            REM Version: 1.0
            REM Stand: 2026-06-27
            REM
            REM Hinweis:
            REM Solange _test im Dateinamen steht, wird nur eine Vorschau angezeigt.
            REM Fuer die echte Ausfuehrung _test aus dem Dateinamen entfernen.
            REM ============================================================
            echo.
            set "TESTMODUS=NEIN"
            set /a ANZAHL=0
            set /a UEBERSPRUNGEN=0
            
            echo %~n0 | find /i "_test" >nul
            if not errorlevel 1 set "TESTMODUS=JA"
            
            if "%~1"=="" (
                echo Bitte sende einen Ordner an dieses Skript.
                echo.
                echo Du kannst zum Beispiel einen Ordner rechts anklicken
                echo und dann Senden an verwenden.
                echo.
                pause
                exit /b
            )
            
            if not exist "%~1\" (
                echo Der uebergebene Pfad ist kein Ordner:
                echo %~1
                echo.
                pause
                exit /b
            )
            
            set "ZIEL=%~1"
            
            set "DATUM=%date:~-4%-%date:~3,2%-%date:~0,2%"
            set "ZEIT=%time:~0,2%-%time:~3,2%-%time:~6,2%"
            set "ZEIT=%ZEIT: =0%"
            set "LOGDATEI=%ZIEL%\sortierprotokoll_%DATUM%_%ZEIT%.log"
            
            echo Dateien werden nach Typ sortiert...>>"%LOGDATEI%"
            echo Zielordner: %ZIEL%>>"%LOGDATEI%"
            echo Testmodus: %TESTMODUS%>>"%LOGDATEI%"
            echo Logdatei: %LOGDATEI%>>"%LOGDATEI%"
            echo.>>"%LOGDATEI%"
            
            echo Dateien werden nach Typ sortiert in:
            echo %ZIEL%
            echo.
            echo Testmodus: %TESTMODUS%
            echo Logdatei: %LOGDATEI%
            echo.
            
            if "%TESTMODUS%"=="JA" goto start
            
            echo ACHTUNG: Dieses Skript wird Dateien im Zielordner wirklich verschieben.
            echo.
            set /p "ANTWORT=Zum Fortfahren JA eingeben: "
            
            if /i "%ANTWORT%"=="JA" goto start
            
            echo.
            echo Abgebrochen.
            echo.
            
            echo Abgebrochen.>>"%LOGDATEI%"
            type "%LOGDATEI%" | clip
            
            pause
            exit /b
            
            :start
            echo.
            
            if not exist "%ZIEL%\01_Bilder" mkdir "%ZIEL%\01_Bilder"
            if not exist "%ZIEL%\02_Videos" mkdir "%ZIEL%\02_Videos"
            if not exist "%ZIEL%\03_Dokumente" mkdir "%ZIEL%\03_Dokumente"
            if not exist "%ZIEL%\04_Tabellen" mkdir "%ZIEL%\04_Tabellen"
            if not exist "%ZIEL%\05_Archive" mkdir "%ZIEL%\05_Archive"
            
            for %%f in ("%ZIEL%\*.jpg" "%ZIEL%\*.jpeg" "%ZIEL%\*.png" "%ZIEL%\*.gif" "%ZIEL%\*.webp") do (
                if exist "%%~f" (
                    if "%TESTMODUS%"=="JA" (
                        if exist "%ZIEL%\01_Bilder\%%~nxf" (
                            echo WUERDE UEBERSPRINGEN: "%%~nxf" - Datei existiert bereits in "01_Bilder"
                            echo WUERDE UEBERSPRINGEN: "%%~nxf" - Datei existiert bereits in "01_Bilder">>"%LOGDATEI%"
                            set /a UEBERSPRUNGEN+=1
                        ) else (
                            echo WUERDE VERSCHIEBEN: "%%~nxf" nach "01_Bilder"
                            echo WUERDE VERSCHIEBEN: "%%~nxf" nach "01_Bilder">>"%LOGDATEI%"
                            set /a ANZAHL+=1
                        )
                    ) else (
                        if exist "%ZIEL%\01_Bilder\%%~nxf" (
                            echo UEBERSPRUNGEN: "%%~nxf" - Datei existiert bereits in "01_Bilder"
                            echo UEBERSPRUNGEN: "%%~nxf" - Datei existiert bereits in "01_Bilder">>"%LOGDATEI%"
                            set /a UEBERSPRUNGEN+=1
                        ) else (
                            move "%%~f" "%ZIEL%\01_Bilder\" >nul
                            echo VERSCHOBEN: "%%~nxf" nach "01_Bilder"
                            echo VERSCHOBEN: "%%~nxf" nach "01_Bilder">>"%LOGDATEI%"
                            set /a ANZAHL+=1
                        )
                    )
                )
            )
            
            for %%f in ("%ZIEL%\*.mp4" "%ZIEL%\*.mov" "%ZIEL%\*.mkv" "%ZIEL%\*.avi") do (
                if exist "%%~f" (
                    if "%TESTMODUS%"=="JA" (
                        if exist "%ZIEL%\02_Videos\%%~nxf" (
                            echo WUERDE UEBERSPRINGEN: "%%~nxf" - Datei existiert bereits in "02_Videos"
                            echo WUERDE UEBERSPRINGEN: "%%~nxf" - Datei existiert bereits in "02_Videos">>"%LOGDATEI%"
                            set /a UEBERSPRUNGEN+=1
                        ) else (
                            echo WUERDE VERSCHIEBEN: "%%~nxf" nach "02_Videos"
                            echo WUERDE VERSCHIEBEN: "%%~nxf" nach "02_Videos">>"%LOGDATEI%"
                            set /a ANZAHL+=1
                        )
                    ) else (
                        if exist "%ZIEL%\02_Videos\%%~nxf" (
                            echo UEBERSPRUNGEN: "%%~nxf" - Datei existiert bereits in "02_Videos"
                            echo UEBERSPRUNGEN: "%%~nxf" - Datei existiert bereits in "02_Videos">>"%LOGDATEI%"
                            set /a UEBERSPRUNGEN+=1
                        ) else (
                            move "%%~f" "%ZIEL%\02_Videos\" >nul
                            echo VERSCHOBEN: "%%~nxf" nach "02_Videos"
                            echo VERSCHOBEN: "%%~nxf" nach "02_Videos">>"%LOGDATEI%"
                            set /a ANZAHL+=1
                        )
                    )
                )
            )
            
            for %%f in ("%ZIEL%\*.pdf" "%ZIEL%\*.docx" "%ZIEL%\*.txt") do (
                if exist "%%~f" (
                    if "%TESTMODUS%"=="JA" (
                        if exist "%ZIEL%\03_Dokumente\%%~nxf" (
                            echo WUERDE UEBERSPRINGEN: "%%~nxf" - Datei existiert bereits in "03_Dokumente"
                            echo WUERDE UEBERSPRINGEN: "%%~nxf" - Datei existiert bereits in "03_Dokumente">>"%LOGDATEI%"
                            set /a UEBERSPRUNGEN+=1
                        ) else (
                            echo WUERDE VERSCHIEBEN: "%%~nxf" nach "03_Dokumente"
                            echo WUERDE VERSCHIEBEN: "%%~nxf" nach "03_Dokumente">>"%LOGDATEI%"
                            set /a ANZAHL+=1
                        )
                    ) else (
                        if exist "%ZIEL%\03_Dokumente\%%~nxf" (
                            echo UEBERSPRUNGEN: "%%~nxf" - Datei existiert bereits in "03_Dokumente"
                            echo UEBERSPRUNGEN: "%%~nxf" - Datei existiert bereits in "03_Dokumente">>"%LOGDATEI%"
                            set /a UEBERSPRUNGEN+=1
                        ) else (
                            move "%%~f" "%ZIEL%\03_Dokumente\" >nul
                            echo VERSCHOBEN: "%%~nxf" nach "03_Dokumente"
                            echo VERSCHOBEN: "%%~nxf" nach "03_Dokumente">>"%LOGDATEI%"
                            set /a ANZAHL+=1
                        )
                    )
                )
            )
            
            for %%f in ("%ZIEL%\*.xlsx" "%ZIEL%\*.xls" "%ZIEL%\*.csv") do (
                if exist "%%~f" (
                    if "%TESTMODUS%"=="JA" (
                        if exist "%ZIEL%\04_Tabellen\%%~nxf" (
                            echo WUERDE UEBERSPRINGEN: "%%~nxf" - Datei existiert bereits in "04_Tabellen"
                            echo WUERDE UEBERSPRINGEN: "%%~nxf" - Datei existiert bereits in "04_Tabellen">>"%LOGDATEI%"
                            set /a UEBERSPRUNGEN+=1
                        ) else (
                            echo WUERDE VERSCHIEBEN: "%%~nxf" nach "04_Tabellen"
                            echo WUERDE VERSCHIEBEN: "%%~nxf" nach "04_Tabellen">>"%LOGDATEI%"
                            set /a ANZAHL+=1
                        )
                    ) else (
                        if exist "%ZIEL%\04_Tabellen\%%~nxf" (
                            echo UEBERSPRUNGEN: "%%~nxf" - Datei existiert bereits in "04_Tabellen"
                            echo UEBERSPRUNGEN: "%%~nxf" - Datei existiert bereits in "04_Tabellen">>"%LOGDATEI%"
                            set /a UEBERSPRUNGEN+=1
                        ) else (
                            move "%%~f" "%ZIEL%\04_Tabellen\" >nul
                            echo VERSCHOBEN: "%%~nxf" nach "04_Tabellen"
                            echo VERSCHOBEN: "%%~nxf" nach "04_Tabellen">>"%LOGDATEI%"
                            set /a ANZAHL+=1
                        )
                    )
                )
            )
            
            for %%f in ("%ZIEL%\*.zip" "%ZIEL%\*.rar" "%ZIEL%\*.7z") do (
                if exist "%%~f" (
                    if "%TESTMODUS%"=="JA" (
                        if exist "%ZIEL%\05_Archive\%%~nxf" (
                            echo WUERDE UEBERSPRINGEN: "%%~nxf" - Datei existiert bereits in "05_Archive"
                            echo WUERDE UEBERSPRINGEN: "%%~nxf" - Datei existiert bereits in "05_Archive">>"%LOGDATEI%"
                            set /a UEBERSPRUNGEN+=1
                        ) else (
                            echo WUERDE VERSCHIEBEN: "%%~nxf" nach "05_Archive"
                            echo WUERDE VERSCHIEBEN: "%%~nxf" nach "05_Archive">>"%LOGDATEI%"
                            set /a ANZAHL+=1
                        )
                    ) else (
                        if exist "%ZIEL%\05_Archive\%%~nxf" (
                            echo UEBERSPRUNGEN: "%%~nxf" - Datei existiert bereits in "05_Archive"
                            echo UEBERSPRUNGEN: "%%~nxf" - Datei existiert bereits in "05_Archive">>"%LOGDATEI%"
                            set /a UEBERSPRUNGEN+=1
                        ) else (
                            move "%%~f" "%ZIEL%\05_Archive\" >nul
                            echo VERSCHOBEN: "%%~nxf" nach "05_Archive"
                            echo VERSCHOBEN: "%%~nxf" nach "05_Archive">>"%LOGDATEI%"
                            set /a ANZAHL+=1
                        )
                    )
                )
            )
            
            echo.>>"%LOGDATEI%"
            echo Fertig.>>"%LOGDATEI%"
            
            if "%TESTMODUS%"=="JA" (
                echo Anzahl Dateien, die verschoben wuerden: %ANZAHL%>>"%LOGDATEI%"
                echo Anzahl Dateien, die uebersprungen wuerden: %UEBERSPRUNGEN%>>"%LOGDATEI%"
                echo Es wurde noch nichts verschoben.>>"%LOGDATEI%"
                echo Wenn alles richtig aussieht, entferne _test aus dem Dateinamen.>>"%LOGDATEI%"
            ) else (
                echo Gesamt verschoben: %ANZAHL% Dateien>>"%LOGDATEI%"
                echo Uebersprungen wegen Namenskonflikt: %UEBERSPRUNGEN% Dateien>>"%LOGDATEI%"
            )
            
            type "%LOGDATEI%" | clip
            
            echo.
            echo Fertig.
            echo Das Protokoll wurde erstellt:
            echo %LOGDATEI%
            echo.
            echo Der Inhalt wurde zusaetzlich in die Zwischenablage kopiert.
            echo.
            
            if "%TESTMODUS%"=="JA" (
                echo Anzahl Dateien, die verschoben wuerden: %ANZAHL%
                echo Anzahl Dateien, die uebersprungen wuerden: %UEBERSPRUNGEN%
                echo.
                echo Es wurde noch nichts verschoben.
                echo Wenn alles richtig aussieht, entferne _test aus dem Dateinamen.
            ) else (
                echo Gesamt verschoben: %ANZAHL% Dateien
                echo Uebersprungen wegen Namenskonflikt: %UEBERSPRUNGEN% Dateien
            )
            
            echo.
            pause

            Wichtige Unterschiede der SendTo-Log-Variante

            Diese Variante kombiniert die wichtigsten Elemente aus Variante 2 und Variante 3:

            • Der Zielordner wird über %~1 übergeben.
            • Die Dateien werden direkt im übergebenen Ordner sortiert.
            • Die Logdatei wird im übergebenen Zielordner erstellt.
            • Der Inhalt der Logdatei wird zusätzlich in die Zwischenablage kopiert.

            Die Logdatei wird mit dieser Zeile im Zielordner erzeugt:

            set "LOGDATEI=%ZIEL%\sortierprotokoll_%DATUM%_%ZEIT%.log"

            Wie werden die SendTo-Varianten eingerichtet?

            Die SendTo-Batchdateien oder Verknüpfungen davon können in den Windows-Ordner Senden an gelegt werden.

            Den SendTo-Ordner öffnet man mit:

            shell:sendto

            Danach kann man im Explorer einen Ordner markieren und mit Rechtsklick > Senden an an das gewünschte Skript übergeben.

            Wichtig: Diese SendTo-Varianten erwarten einen Ordner. Dateien selbst werden nicht als Eingabe verwendet.

            Was passiert im Testmodus?

            Solange _test im Dateinamen steht, wird nur angezeigt, was passieren würde.

            Beispiel:

            004_dateien_nach_typ_sortieren_test.bat

            Im Testmodus erscheinen Meldungen wie:

            WUERDE VERSCHIEBEN: "rechnung.pdf" nach "03_Dokumente"
            WUERDE UEBERSPRINGEN: "bild.jpg" - Datei existiert bereits in "01_Bilder"

            Es wird noch nichts verschoben.

            Wenn alles korrekt aussieht, kann _test aus dem Dateinamen entfernt werden. Danach fragt das Skript vor der echten Ausführung zusätzlich nach JA.

            Was passiert bei Namenskonflikten?

            Wenn im Zielordner bereits eine Datei mit gleichem Namen existiert, wird die Datei übersprungen.

            Beispiel:

            bild_001.jpg

            Wenn diese Datei bereits in 01_Bilder vorhanden ist, wird eine weitere Datei mit gleichem Namen nicht darübergeschrieben.

            Das ist wichtig, damit keine vorhandenen Dateien versehentlich überschrieben werden.

            Typische Anpassungen

            Die Dateitypen können direkt im Skript angepasst werden.

            Wenn du zum Beispiel weitere Bildformate ergänzen möchtest, kannst du die Bild-Schleife erweitern:

            for %%f in (*.jpg *.jpeg *.png *.gif *.webp *.bmp *.tif *.tiff) do (

            In der SendTo-Variante wäre die Schreibweise entsprechend:

            for %%f in ("%ZIEL%\*.jpg" "%ZIEL%\*.jpeg" "%ZIEL%\*.png" "%ZIEL%\*.gif" "%ZIEL%\*.webp" "%ZIEL%\*.bmp") do (

            Du kannst auch neue Zielordner ergänzen, zum Beispiel für Audiodateien:

            if not exist "06_Audio" mkdir "06_Audio"
            
            for %%f in (*.mp3 *.wav *.flac) do (
                ...
            )

            Häufige Fehler

            Die Datei wird nur im Editor geöffnet

            Dann wurde sie wahrscheinlich als Textdatei gespeichert.

            Die Datei muss zum Beispiel so heißen:

            004_dateien_nach_typ_sortieren_test.bat

            und nicht:

            004_dateien_nach_typ_sortieren_test.bat.txt

            Es wird nichts verschoben

            Wenn _test noch im Dateinamen steht, ist das korrekt. Dann befindet sich das Skript im Testmodus und zeigt nur eine Vorschau an.

            Für die echte Ausführung muss _test aus dem Dateinamen entfernt werden.

            Das Skript überspringt Dateien

            Wenn im Zielordner bereits eine gleichnamige Datei vorhanden ist, wird die Datei bewusst übersprungen. Dadurch verhindert das Skript, dass vorhandene Dateien überschrieben werden.

            Die SendTo-Variante meldet, dass kein Ordner übergeben wurde

            Dann wurde das Skript vermutlich direkt per Doppelklick gestartet. Die SendTo-Variante erwartet einen Ordner, der per Senden an oder per Drag-and-drop übergeben wird.

            Logdatei wird ebenfalls einsortiert

            Die Logdatei hat die Endung .log. In dieser Version wird .log nicht in eine der Sortiergruppen aufgenommen. Dadurch bleibt die Logdatei normalerweise im aktuellen Ordner beziehungsweise Zielordner liegen.

            Was haben wir gelernt?

            In diesem Teil wurden mehrere wichtige Batch-Grundlagen gezeigt:

            for kann Dateien mit bestimmten Endungen durchlaufen.
            move verschiebt Dateien.
            if exist prüft, ob eine Datei oder ein Ordner vorhanden ist.
            mkdir erstellt Zielordner.
            %~nxf gibt Dateiname und Erweiterung aus.
            _test im Dateinamen kann als Testmodus verwendet werden.
            set /a kann Zähler erhöhen.
            >> schreibt Meldungen in eine Logdatei.
            type und clip kopieren ein Protokoll in die Zwischenablage.
            %~1 wird bei SendTo-Skripten als übergebener Ordner verwendet.

            Damit ist dieses Skript-Paket ein praktisches Werkzeug, um gemischte Ordner automatisch nach Dateitypen zu sortieren und bei Bedarf ein Protokoll der Aktionen zu erhalten.

             

            Video zu diesem Tutorial:

             

            Das könnte Dich auch interessieren

            Keine Einträge gefunden

            Schreibe einen Kommentar Antwort abbrechen

            Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

            INTERESSANTE SEITEN

            • TUTORIALS SCHNELLER FINDEN
            • SCHNELLER RECHNEN LERNEN
            • MATHE AUFGABEN GENERATOR
            • LINIEN UND KARO GENERATOR
            • VORLAGEN ZUM AUSDRUCKEN
            • BINGO-SCHEIN-GENERATOR
            • MEINE WUNSCHLISTE
            • Symbole zum Kopieren

            Content

            • Microsoft Excel Tutorials
            • Microsoft Excel VBA Tutorials
            • Microsoft Word Tutorials
            • Microsoft Powerpoint Tutorials
            • Microsoft Windows 10 Tutorials
            • Google Tabellen Tutorials
            • Google Tabellen Script Tutorials
            • Google Docs Tutorials
            • LibreOffice Calc Tutorials
            • Libre Office Writer Tutorials
            • LibreOffice Impress Tutorials
            • OpenOffice Calc Tutorials
            • OpenOffice Writer Tutorials
            • OpenOffice Impress Tutorials
            • WPS Spreadsheets Tutorials
            • WPS Spreadsheets Tutorials

            Neue Beiträge

            • Python Grundkurs 004: Dateien automatisch nach Dateityp sortieren
            • PowerShell 7 Grundkurs 004: Dateien automatisch nach Dateityp sortieren
            • Batch Grundkurs 004: Dateien nach Dateityp automatisch sortieren
            • Python Grundkurs 003: Dateiliste erstellen
            • PowerShell 7 Grundkurs 003: Dateiliste erstellen

            Neue Kommentare

            • Chris zu Python in LibreOffice Calc: Formular auslesen und auswerten
            • Detlef M. zu Python in LibreOffice Calc: Formular auslesen und auswerten
            • Johannes Hanel zu Verknüpfungen in LibreOffice Calc
            • Holfrie zu Symbole vergrößern von der Benutzeroberfläche (OpenOffice)
            • Bianca zu Tutorial Wunsch Liste
            • Wolfgang Dehmer zu Funktion zeitlich gesteuert ausführen (Google Tabellen) Script

            Schlagwörter-Wolke

            anfänger Anleitung anpassen ausrechnen auswahlliste Bedingte Formatierung berechnen Calc Datum Download Dropdownliste einfügen entfernen erstellen Excel FreeOffice Funktion google hinzufügen Jahresplan Kalender Lernvideo LibreOffice löschen Makro markieren Microsoft OpenOffice PlanMaker programmierung script spreadsheets Sverweis Tabelle tabellen Tutorial VBA Video Wenn Wenn Funktion Word wps spreadsheets Zeilen Zelle Zellen
            KONTAKT   IMPRESSUM    DATENSCHUTZERKLÄRUNG    HAFTUNGSAUSSCHLUSS (Disclaimer)   © copyright TOPTORIALS