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

            Batch Grundkurs 010: Fehlende Dateien in zwei Ordnern finden

            • Startseite
            • Tutorials Windows Automatisierung Batch Grundkurs
            • Batch Grundkurs 010: Fehlende Dateien in zwei Ordnern finden

            Batch Grundkurs 010: Fehlende Dateien in zwei Ordnern vergleichen

            Worum geht es in diesem Teil?

            In diesem zehnten Teil des Batch-Grundkurses vergleichen wir zwei Ordner miteinander und ermitteln, welche Dateien jeweils im anderen Ordner fehlen.

            Das ist besonders praktisch, wenn man kontrollieren möchte, ob zwei Ordner denselben Dateibestand enthalten oder ob bestimmte Dateien noch fehlen.

            Beispiel:

            Ordner 1:
            Bild_001.CR3
            Bild_002.CR3
            Bild_003.CR3
            
            Ordner 2:
            Bild_001.JPG
            Bild_003.JPG
            Bild_004.JPG

            Wenn ohne Dateierweiterung verglichen wird, erkennt das Skript:

            Bild_002 fehlt in Ordner 2.
            Bild_004 fehlt in Ordner 1.

            Damit eignet sich dieses Skript zum Beispiel sehr gut für RAW/JPG-Vergleiche, Exportkontrollen oder Projektabgleiche.

            Warum ist dieses Beispiel praktisch?

            Beim Arbeiten mit Dateien kommt es häufig vor, dass zwei Ordner miteinander verglichen werden müssen.

            Typische Anwendungsfälle:

            RAW-Dateien mit JPG-Exporten vergleichen
            Originaldateien mit bearbeiteten Exporten vergleichen
            Scanordner mit sortiertem Zielordner vergleichen
            Projektordner mit Kontrollordner vergleichen
            lokale Dateien mit Backup- oder Exportordner vergleichen
            fehlende Dateien vor einer Archivierung finden

            Das Skript prüft dabei nicht nur eine Richtung, sondern beide Richtungen:

            • Welche Dateien aus Ordner 1 fehlen in Ordner 2?
            • Welche Dateien aus Ordner 2 fehlen in Ordner 1?

            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 010:

            Download Batch Grundkurs: 010_Fehlende_Dateien_vergleichen 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\010_Fehlende_Dateien_vergleichen

            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

            Die Testumgebung enthält vorbereitete Ordner und Beispieldateien für die einzelnen Teile des Kurses. 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. Für den Batch-Grundkurs arbeiten wir mit einer eigenen Kopie des Testdatenordners.

            Nach dem Entpacken und Umbenennen sieht der Pfad zum Testdatenordner für den Batch-Grundkurs zum Beispiel so aus:

            C:\TOPTORIALS_CODE\1000_TESTBEREICH\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\010_Fehlende_Dateien_vergleichen

            Für die Variante mit festen Ordnern liegen die beiden Vergleichsordner zum Beispiel hier:

            C:\TOPTORIALS_CODE\1000_TESTBEREICH\TOPTORIALS_Testdaten_Windows_Automatisierung_Batch_V001\010_Fehlende_Dateien_vergleichen\01_Feste_Ordner_vergleichen\01_Ordner_1
            
            C:\TOPTORIALS_CODE\1000_TESTBEREICH\TOPTORIALS_Testdaten_Windows_Automatisierung_Batch_V001\010_Fehlende_Dateien_vergleichen\01_Feste_Ordner_vergleichen\02_Ordner_2

            Für die SendTo-Variante kannst du zum Beispiel diese beiden Ordner markieren und an das Skript senden:

            C:\TOPTORIALS_CODE\1000_TESTBEREICH\TOPTORIALS_Testdaten_Windows_Automatisierung_Batch_V001\010_Fehlende_Dateien_vergleichen\02_SendTo_Zwei_Ordner_vergleichen\Ordner_A
            
            C:\TOPTORIALS_CODE\1000_TESTBEREICH\TOPTORIALS_Testdaten_Windows_Automatisierung_Batch_V001\010_Fehlende_Dateien_vergleichen\02_SendTo_Zwei_Ordner_vergleichen\Ordner_B

            Du musst die Testumgebung aber nicht verwenden. Die Batchdateien funktionieren auch mit eigenen Ordnern. Wichtig ist nur, dass du zuerst mit Testdaten 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 ist vergleichsweise sicher, weil keine vorhandenen Dateien gelöscht, verschoben oder umbenannt werden. Die Skripte vergleichen nur Dateinamen und erstellen Ergebnisdateien beziehungsweise kopieren eine Zusammenfassung in die Zwischenablage.

            Enthaltene Skripte

            Zu diesem Teil gehören vier Batchdateien:

            010_fehlende_dateien_vergleichen_test.bat
            010_fehlende_dateien_vergleichen.bat
            010_sendto_zwei_ordner_vergleichen_test.bat
            010_sendto_zwei_ordner_vergleichen.bat

            Welche Variante brauche ich?

            • Feste Ordner im Testmodus: Wenn zwei festgelegte Unterordner verglichen werden sollen und nur eine Vorschau benötigt wird.
            • Feste Ordner mit Ergebnisdatei: Wenn zwei festgelegte Unterordner verglichen und das Ergebnis gespeichert werden soll.
            • SendTo-Testvariante: Wenn genau zwei Ordner im Explorer markiert und per Rechtsklick verglichen werden sollen, zunächst nur als Vorschau.
            • SendTo-Variante: Wenn genau zwei Ordner per Rechtsklick verglichen und Ergebnisdateien geschrieben werden sollen.

            Vergleich mit oder ohne Dateierweiterung

            Beim Start fragt das Skript, ob die Dateierweiterung beim Vergleich berücksichtigt werden soll.

            Vergleich mit Dateierweiterung

            Dann wird der komplette Dateiname verglichen.

            Rechnung.pdf

            ist dann nicht gleich:

            Rechnung.docx

            Diese Variante ist sinnvoll, wenn wirklich exakt gleiche Dateinamen inklusive Dateiendung erwartet werden.

            Vergleich ohne Dateierweiterung

            Dann wird nur der Name ohne Dateiendung verglichen.

            Bild_001.CR3

            wird dann als passend erkannt zu:

            Bild_001.JPG

            Diese Variante ist besonders nützlich für RAW/JPG-Vergleiche oder Exportkontrollen.

            Variante 1: Zwei feste Ordner vergleichen im Testmodus

            Die Datei heißt:

            010_fehlende_dateien_vergleichen_test.bat

            Diese Variante arbeitet mit zwei festen Unterordnern. In der Testumgebung sind das:

            01_Ordner_1
            02_Ordner_2

            Das Skript vergleicht beide Ordner in beide Richtungen und zeigt an, welche Dateien jeweils fehlen.

            Der komplette Code der festen Testvariante

            @echo off
            REM ============================================================
            REM TOPTORIALS OFFICE - Batch Grundkurs
            REM Script: 010_fehlende_dateien_vergleichen_test.bat
            REM Beschreibung: Vergleicht zwei feste Ordner und listet fehlende Dateien auf.
            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.
            setlocal enabledelayedexpansion
            
            set "TESTMODUS=NEIN"
            
            set "ORDNER_1=C:\TOPTORIALS_CODE\1000_TESTBEREICH\TOPTORIALS_Testdaten_Windows_Automatisierung_Batch_V001\010_Fehlende_Dateien_vergleichen\01_Feste_Ordner_vergleichen\01_Ordner_1"
            set "ORDNER_2=C:\TOPTORIALS_CODE\1000_TESTBEREICH\TOPTORIALS_Testdaten_Windows_Automatisierung_Batch_V001\010_Fehlende_Dateien_vergleichen\01_Feste_Ordner_vergleichen\02_Ordner_2"
            
            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 "ZEITSTEMPEL=%DATUM%_%ZEIT%"
            
            set "AUSGABEDATEI=vergleich_ergebnis_%ZEITSTEMPEL%.txt"
            
            set /a FEHLT_IN_ORDNER_1=0
            set /a FEHLT_IN_ORDNER_2=0
            set /a ANZAHL_ORDNER_1=0
            set /a ANZAHL_ORDNER_2=0
            
            echo %~n0 | find /i "_test" >nul
            if not errorlevel 1 set "TESTMODUS=JA"
            
            echo Zwei Ordner werden miteinander verglichen...
            echo.
            echo Ordner 1:
            echo %ORDNER_1%
            echo.
            echo Ordner 2:
            echo %ORDNER_2%
            echo.
            echo Ergebnisdatei:
            echo %AUSGABEDATEI%
            echo.
            echo Testmodus: %TESTMODUS%
            echo.
            
            if not exist "%ORDNER_1%\" (
                echo Ordner 1 wurde nicht gefunden:
                echo %ORDNER_1%
                echo.
                pause
                exit /b
            )
            
            if not exist "%ORDNER_2%\" (
                echo Ordner 2 wurde nicht gefunden:
                echo %ORDNER_2%
                echo.
                pause
                exit /b
            )
            
            echo Soll die Dateierweiterung beim Vergleich beruecksichtigt werden?
            echo.
            echo JA   = kompletter Dateiname wird verglichen, z.B. Datei.pdf
            echo NEIN = nur der Name ohne Erweiterung wird verglichen, z.B. Datei
            echo.
            set /p "MIT_ENDUNG=Dateierweiterung beruecksichtigen? JA/NEIN: "
            
            if /i "%MIT_ENDUNG%"=="JA" goto vergleich_start
            if /i "%MIT_ENDUNG%"=="NEIN" goto vergleich_start
            
            echo.
            echo Ungueltige Eingabe.
            echo Bitte JA oder NEIN eingeben.
            echo.
            pause
            exit /b
            
            :vergleich_start
            echo.
            echo Vergleich startet...
            echo.
            
            if "%TESTMODUS%"=="NEIN" (
                echo Vergleich von "%ORDNER_1%" und "%ORDNER_2%">>"%AUSGABEDATEI%"
                echo Dateierweiterung beruecksichtigen: %MIT_ENDUNG%>>"%AUSGABEDATEI%"
                echo.>>"%AUSGABEDATEI%"
            )
            
            echo Dateien aus "%ORDNER_1%" werden in "%ORDNER_2%" gesucht...
            echo.
            
            if "%TESTMODUS%"=="NEIN" (
                echo Dateien aus "%ORDNER_1%", die in "%ORDNER_2%" fehlen:>>"%AUSGABEDATEI%"
            )
            
            for %%f in ("%ORDNER_1%\*.*") do (
                if exist "%%~f" (
                    set /a ANZAHL_ORDNER_1+=1
            
                    if /i "%MIT_ENDUNG%"=="JA" (
                        set "SUCHNAME=%%~nxf"
            
                        if exist "%ORDNER_2%\!SUCHNAME!" (
                            rem Datei wurde gefunden
                        ) else (
                            echo FEHLT IN %ORDNER_2%: "!SUCHNAME!"
                            if "%TESTMODUS%"=="NEIN" echo FEHLT: "!SUCHNAME!">>"%AUSGABEDATEI%"
                            set /a FEHLT_IN_ORDNER_2+=1
                        )
                    ) else (
                        set "SUCHNAME=%%~nf"
                        set "GEFUNDEN=NEIN"
            
                        for %%z in ("%ORDNER_2%\!SUCHNAME!.*") do (
                            if exist "%%~z" set "GEFUNDEN=JA"
                        )
            
                        if "!GEFUNDEN!"=="NEIN" (
                            echo FEHLT IN %ORDNER_2%: "!SUCHNAME!"
                            if "%TESTMODUS%"=="NEIN" echo FEHLT: "!SUCHNAME!">>"%AUSGABEDATEI%"
                            set /a FEHLT_IN_ORDNER_2+=1
                        )
                    )
                )
            )
            
            if "%TESTMODUS%"=="NEIN" echo.>>"%AUSGABEDATEI%"
            
            echo.
            echo Dateien aus "%ORDNER_2%" werden in "%ORDNER_1%" gesucht...
            echo.
            
            if "%TESTMODUS%"=="NEIN" (
                echo Dateien aus "%ORDNER_2%", die in "%ORDNER_1%" fehlen:>>"%AUSGABEDATEI%"
            )
            
            for %%f in ("%ORDNER_2%\*.*") do (
                if exist "%%~f" (
                    set /a ANZAHL_ORDNER_2+=1
            
                    if /i "%MIT_ENDUNG%"=="JA" (
                        set "SUCHNAME=%%~nxf"
            
                        if exist "%ORDNER_1%\!SUCHNAME!" (
                            rem Datei wurde gefunden
                        ) else (
                            echo FEHLT IN %ORDNER_1%: "!SUCHNAME!"
                            if "%TESTMODUS%"=="NEIN" echo FEHLT: "!SUCHNAME!">>"%AUSGABEDATEI%"
                            set /a FEHLT_IN_ORDNER_1+=1
                        )
                    ) else (
                        set "SUCHNAME=%%~nf"
                        set "GEFUNDEN=NEIN"
            
                        for %%z in ("%ORDNER_1%\!SUCHNAME!.*") do (
                            if exist "%%~z" set "GEFUNDEN=JA"
                        )
            
                        if "!GEFUNDEN!"=="NEIN" (
                            echo FEHLT IN %ORDNER_1%: "!SUCHNAME!"
                            if "%TESTMODUS%"=="NEIN" echo FEHLT: "!SUCHNAME!">>"%AUSGABEDATEI%"
                            set /a FEHLT_IN_ORDNER_1+=1
                        )
                    )
                )
            )
            
            if "%TESTMODUS%"=="NEIN" (
                echo.>>"%AUSGABEDATEI%"
                echo Zusammenfassung:>>"%AUSGABEDATEI%"
                echo Dateien in %ORDNER_1%: %ANZAHL_ORDNER_1%>>"%AUSGABEDATEI%"
                echo Dateien in %ORDNER_2%: %ANZAHL_ORDNER_2%>>"%AUSGABEDATEI%"
                echo Fehlen in %ORDNER_1%: %FEHLT_IN_ORDNER_1%>>"%AUSGABEDATEI%"
                echo Fehlen in %ORDNER_2%: %FEHLT_IN_ORDNER_2%>>"%AUSGABEDATEI%"
            )
            
            echo.
            echo Fertig.
            echo.
            echo Dateien in %ORDNER_1%: %ANZAHL_ORDNER_1%
            echo Dateien in %ORDNER_2%: %ANZAHL_ORDNER_2%
            echo.
            echo Fehlen in %ORDNER_1%: %FEHLT_IN_ORDNER_1%
            echo Fehlen in %ORDNER_2%: %FEHLT_IN_ORDNER_2%
            echo.
            
            if "%TESTMODUS%"=="JA" (
                echo Es wurde noch keine Ergebnisdatei erstellt.
                echo Wenn du eine Ergebnisdatei erstellen moechtest, entferne _test aus dem Dateinamen.
            ) else (
                echo Ergebnisdatei wurde erstellt:
                echo %AUSGABEDATEI%
            )
            
            echo.
            pause

            Code der festen Testvariante erklärt

            Testmodus erkennen

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

            Das Skript erkennt den Testmodus über den Dateinamen. Wenn _test im Namen der Batchdatei vorkommt, wird keine Ergebnisdatei geschrieben.

            Ordner festlegen

            In der festen Variante werden zwei Ordner im Skript definiert. Diese Ordner werden miteinander verglichen.

            In der Testumgebung zeigen die festen Pfade auf diese beiden Ordner:

            C:\TOPTORIALS_CODE\1000_TESTBEREICH\TOPTORIALS_Testdaten_Windows_Automatisierung_Batch_V001\010_Fehlende_Dateien_vergleichen\01_Feste_Ordner_vergleichen\01_Ordner_1
            
            C:\TOPTORIALS_CODE\1000_TESTBEREICH\TOPTORIALS_Testdaten_Windows_Automatisierung_Batch_V001\010_Fehlende_Dateien_vergleichen\01_Feste_Ordner_vergleichen\02_Ordner_2

            Der Vorteil ist, dass man das Skript einfach starten kann, ohne jedes Mal Ordner auswählen zu müssen.

            Abfrage der Dateierweiterung

            Beim Start wird abgefragt, ob die Dateierweiterung berücksichtigt werden soll.

            Dadurch kann das Skript je nach Anwendungsfall exakt oder nur anhand des Basisnamens vergleichen.

            Beide Richtungen vergleichen

            Das Skript prüft nicht nur, was in Ordner 2 fehlt, sondern auch, was in Ordner 1 fehlt.

            Dadurch entsteht ein vollständiger Vergleich.

            Variante 2: Zwei feste Ordner vergleichen mit Ergebnisdatei

            Die Datei heißt:

            010_fehlende_dateien_vergleichen.bat

            Diese Variante arbeitet wie die Testvariante, erstellt aber zusätzlich eine Ergebnisdatei mit Zeitstempel.

            Der komplette Code der festen Ergebnisvariante

            @echo off
            REM ============================================================
            REM TOPTORIALS OFFICE - Batch Grundkurs
            REM Script: 010_fehlende_dateien_vergleichen_test.bat
            REM Beschreibung: Vergleicht zwei feste Ordner und listet fehlende Dateien auf.
            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.
            setlocal enabledelayedexpansion
            
            set "TESTMODUS=NEIN"
            
            set "ORDNER_1=C:\TOPTORIALS_CODE\1000_TESTBEREICH\TOPTORIALS_Testdaten_Windows_Automatisierung_Batch_V001\010_Fehlende_Dateien_vergleichen\01_Feste_Ordner_vergleichen\01_Ordner_1"
            set "ORDNER_2=C:\TOPTORIALS_CODE\1000_TESTBEREICH\TOPTORIALS_Testdaten_Windows_Automatisierung_Batch_V001\010_Fehlende_Dateien_vergleichen\01_Feste_Ordner_vergleichen\02_Ordner_2"
            
            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 "ZEITSTEMPEL=%DATUM%_%ZEIT%"
            
            set "AUSGABEDATEI=vergleich_ergebnis_%ZEITSTEMPEL%.txt"
            
            set /a FEHLT_IN_ORDNER_1=0
            set /a FEHLT_IN_ORDNER_2=0
            set /a ANZAHL_ORDNER_1=0
            set /a ANZAHL_ORDNER_2=0
            
            echo %~n0 | find /i "_test" >nul
            if not errorlevel 1 set "TESTMODUS=JA"
            
            echo Zwei Ordner werden miteinander verglichen...
            echo.
            echo Ordner 1:
            echo %ORDNER_1%
            echo.
            echo Ordner 2:
            echo %ORDNER_2%
            echo.
            echo Ergebnisdatei:
            echo %AUSGABEDATEI%
            echo.
            echo Testmodus: %TESTMODUS%
            echo.
            
            if not exist "%ORDNER_1%\" (
                echo Ordner 1 wurde nicht gefunden:
                echo %ORDNER_1%
                echo.
                pause
                exit /b
            )
            
            if not exist "%ORDNER_2%\" (
                echo Ordner 2 wurde nicht gefunden:
                echo %ORDNER_2%
                echo.
                pause
                exit /b
            )
            
            echo Soll die Dateierweiterung beim Vergleich beruecksichtigt werden?
            echo.
            echo JA   = kompletter Dateiname wird verglichen, z.B. Datei.pdf
            echo NEIN = nur der Name ohne Erweiterung wird verglichen, z.B. Datei
            echo.
            set /p "MIT_ENDUNG=Dateierweiterung beruecksichtigen? JA/NEIN: "
            
            if /i "%MIT_ENDUNG%"=="JA" goto vergleich_start
            if /i "%MIT_ENDUNG%"=="NEIN" goto vergleich_start
            
            echo.
            echo Ungueltige Eingabe.
            echo Bitte JA oder NEIN eingeben.
            echo.
            pause
            exit /b
            
            :vergleich_start
            echo.
            echo Vergleich startet...
            echo.
            
            if "%TESTMODUS%"=="NEIN" (
                echo Vergleich von "%ORDNER_1%" und "%ORDNER_2%">>"%AUSGABEDATEI%"
                echo Dateierweiterung beruecksichtigen: %MIT_ENDUNG%>>"%AUSGABEDATEI%"
                echo.>>"%AUSGABEDATEI%"
            )
            
            echo Dateien aus "%ORDNER_1%" werden in "%ORDNER_2%" gesucht...
            echo.
            
            if "%TESTMODUS%"=="NEIN" (
                echo Dateien aus "%ORDNER_1%", die in "%ORDNER_2%" fehlen:>>"%AUSGABEDATEI%"
            )
            
            for %%f in ("%ORDNER_1%\*.*") do (
                if exist "%%~f" (
                    set /a ANZAHL_ORDNER_1+=1
            
                    if /i "%MIT_ENDUNG%"=="JA" (
                        set "SUCHNAME=%%~nxf"
            
                        if exist "%ORDNER_2%\!SUCHNAME!" (
                            rem Datei wurde gefunden
                        ) else (
                            echo FEHLT IN %ORDNER_2%: "!SUCHNAME!"
                            if "%TESTMODUS%"=="NEIN" echo FEHLT: "!SUCHNAME!">>"%AUSGABEDATEI%"
                            set /a FEHLT_IN_ORDNER_2+=1
                        )
                    ) else (
                        set "SUCHNAME=%%~nf"
                        set "GEFUNDEN=NEIN"
            
                        for %%z in ("%ORDNER_2%\!SUCHNAME!.*") do (
                            if exist "%%~z" set "GEFUNDEN=JA"
                        )
            
                        if "!GEFUNDEN!"=="NEIN" (
                            echo FEHLT IN %ORDNER_2%: "!SUCHNAME!"
                            if "%TESTMODUS%"=="NEIN" echo FEHLT: "!SUCHNAME!">>"%AUSGABEDATEI%"
                            set /a FEHLT_IN_ORDNER_2+=1
                        )
                    )
                )
            )
            
            if "%TESTMODUS%"=="NEIN" echo.>>"%AUSGABEDATEI%"
            
            echo.
            echo Dateien aus "%ORDNER_2%" werden in "%ORDNER_1%" gesucht...
            echo.
            
            if "%TESTMODUS%"=="NEIN" (
                echo Dateien aus "%ORDNER_2%", die in "%ORDNER_1%" fehlen:>>"%AUSGABEDATEI%"
            )
            
            for %%f in ("%ORDNER_2%\*.*") do (
                if exist "%%~f" (
                    set /a ANZAHL_ORDNER_2+=1
            
                    if /i "%MIT_ENDUNG%"=="JA" (
                        set "SUCHNAME=%%~nxf"
            
                        if exist "%ORDNER_1%\!SUCHNAME!" (
                            rem Datei wurde gefunden
                        ) else (
                            echo FEHLT IN %ORDNER_1%: "!SUCHNAME!"
                            if "%TESTMODUS%"=="NEIN" echo FEHLT: "!SUCHNAME!">>"%AUSGABEDATEI%"
                            set /a FEHLT_IN_ORDNER_1+=1
                        )
                    ) else (
                        set "SUCHNAME=%%~nf"
                        set "GEFUNDEN=NEIN"
            
                        for %%z in ("%ORDNER_1%\!SUCHNAME!.*") do (
                            if exist "%%~z" set "GEFUNDEN=JA"
                        )
            
                        if "!GEFUNDEN!"=="NEIN" (
                            echo FEHLT IN %ORDNER_1%: "!SUCHNAME!"
                            if "%TESTMODUS%"=="NEIN" echo FEHLT: "!SUCHNAME!">>"%AUSGABEDATEI%"
                            set /a FEHLT_IN_ORDNER_1+=1
                        )
                    )
                )
            )
            
            if "%TESTMODUS%"=="NEIN" (
                echo.>>"%AUSGABEDATEI%"
                echo Zusammenfassung:>>"%AUSGABEDATEI%"
                echo Dateien in %ORDNER_1%: %ANZAHL_ORDNER_1%>>"%AUSGABEDATEI%"
                echo Dateien in %ORDNER_2%: %ANZAHL_ORDNER_2%>>"%AUSGABEDATEI%"
                echo Fehlen in %ORDNER_1%: %FEHLT_IN_ORDNER_1%>>"%AUSGABEDATEI%"
                echo Fehlen in %ORDNER_2%: %FEHLT_IN_ORDNER_2%>>"%AUSGABEDATEI%"
            )
            
            echo.
            echo Fertig.
            echo.
            echo Dateien in %ORDNER_1%: %ANZAHL_ORDNER_1%
            echo Dateien in %ORDNER_2%: %ANZAHL_ORDNER_2%
            echo.
            echo Fehlen in %ORDNER_1%: %FEHLT_IN_ORDNER_1%
            echo Fehlen in %ORDNER_2%: %FEHLT_IN_ORDNER_2%
            echo.
            
            if "%TESTMODUS%"=="JA" (
                echo Es wurde noch keine Ergebnisdatei erstellt.
                echo Wenn du eine Ergebnisdatei erstellen moechtest, entferne _test aus dem Dateinamen.
            ) else (
                echo Ergebnisdatei wurde erstellt:
                echo %AUSGABEDATEI%
            )
            
            echo.
            pause

            Wichtige Unterschiede der festen Ergebnisvariante

            Ergebnisdatei mit Zeitstempel

            Die Ergebnisdatei enthält einen Zeitstempel im Namen.

            Beispiel:

            vergleich_ergebnis_2026-06-27_16-42-08.txt

            Dadurch können mehrere Vergleichsergebnisse nebeneinander gespeichert werden.

            Ausgabe in Datei

            Die Ergebnisse werden nicht nur im Fenster angezeigt, sondern auch in eine Textdatei geschrieben.

            Das ist praktisch, wenn man die fehlenden Dateien später kontrollieren, weitergeben oder dokumentieren möchte.

            Robuste Schreibweise für die Ergebnisdatei

            Bei der Ausgabe in die Ergebnisdatei wird die Umleitung bewusst vor den echo-Befehl gesetzt.

            >>"%AUSGABEDATEI%" echo Fehlen in %ORDNER_1%: %FEHLT_IN_ORDNER_1%

            Diese Schreibweise ist robuster, wenn eine Zeile mit einer Zahl endet. So wird verhindert, dass Batch eine Zahl direkt vor der Umleitung falsch interpretiert.

            Variante 3: SendTo-Testvariante für genau zwei Ordner

            Die Datei heißt:

            010_sendto_zwei_ordner_vergleichen_test.bat

            Diese Variante ist für das Windows-Menü Senden an gedacht.

            Im Explorer müssen genau zwei Ordner markiert und an das Skript gesendet werden.

            Wichtig:

            • Es müssen genau zwei Ordner übergeben werden.
            • Weniger als zwei Ordner sind nicht erlaubt.
            • Mehr als zwei Ordner sind nicht erlaubt.
            • Dateien statt Ordnern werden nicht akzeptiert.

            Der komplette Code der SendTo-Testvariante

            @echo off
            REM ============================================================
            REM TOPTORIALS OFFICE - Batch Grundkurs
            REM Script: 010_sendto_zwei_ordner_vergleichen_test.bat
            REM Beschreibung: Vergleicht zwei uebergebene Ordner und listet fehlende Dateien auf.
            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.
            setlocal enabledelayedexpansion
            
            set "TESTMODUS=NEIN"
            
            set /a ANZAHL_ORDNER_1=0
            set /a ANZAHL_ORDNER_2=0
            set /a FEHLT_IN_ORDNER_1=0
            set /a FEHLT_IN_ORDNER_2=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 "ZEITSTEMPEL=%DATUM%_%ZEIT%"
            
            set "CLIPDATEI=%TEMP%\vergleich_zwischenablage_%ZEITSTEMPEL%.txt"
            
            if "%~1"=="" goto falsche_anzahl
            if "%~2"=="" goto falsche_anzahl
            if not "%~3"=="" goto falsche_anzahl
            
            if not exist "%~1\" goto erster_kein_ordner
            if not exist "%~2\" goto zweiter_kein_ordner
            
            set "ORDNER_1=%~1"
            set "ORDNER_2=%~2"
            
            set "AUSGABE_1=%ORDNER_1%\vergleich_fehlt_hier_%ZEITSTEMPEL%.txt"
            set "AUSGABE_2=%ORDNER_2%\vergleich_fehlt_hier_%ZEITSTEMPEL%.txt"
            
            echo Zwei Ordner werden miteinander verglichen...
            echo.
            echo Ordner 1:
            echo %ORDNER_1%
            echo.
            echo Ordner 2:
            echo %ORDNER_2%
            echo.
            echo Testmodus: %TESTMODUS%
            echo.
            
            echo Soll die Dateierweiterung beim Vergleich beruecksichtigt werden?
            echo.
            echo JA   = kompletter Dateiname wird verglichen, z.B. Datei.pdf
            echo NEIN = nur der Name ohne Erweiterung wird verglichen, z.B. Datei
            echo.
            set /p "MIT_ENDUNG=Dateierweiterung beruecksichtigen? JA/NEIN: "
            
            if /i "%MIT_ENDUNG%"=="JA" goto vergleich_start
            if /i "%MIT_ENDUNG%"=="NEIN" goto vergleich_start
            
            echo.
            echo Ungueltige Eingabe.
            echo Bitte JA oder NEIN eingeben.
            echo.
            pause
            exit /b
            
            :vergleich_start
            echo.
            echo Vergleich startet...
            echo.
            
            if exist "%CLIPDATEI%" del "%CLIPDATEI%"
            
            echo Vergleichsergebnis>"%CLIPDATEI%"
            echo.>>"%CLIPDATEI%"
            echo Ordner 1:>>"%CLIPDATEI%"
            echo %ORDNER_1%>>"%CLIPDATEI%"
            echo.>>"%CLIPDATEI%"
            echo Ordner 2:>>"%CLIPDATEI%"
            echo %ORDNER_2%>>"%CLIPDATEI%"
            echo.>>"%CLIPDATEI%"
            echo Dateierweiterung beruecksichtigen: %MIT_ENDUNG%>>"%CLIPDATEI%"
            echo Testmodus: %TESTMODUS%>>"%CLIPDATEI%"
            echo.>>"%CLIPDATEI%"
            
            if "%TESTMODUS%"=="NEIN" (
                call :kopf_schreiben "%AUSGABE_1%" "%ORDNER_1%" "%ORDNER_2%"
                call :kopf_schreiben "%AUSGABE_2%" "%ORDNER_2%" "%ORDNER_1%"
            )
            
            echo Dateien aus Ordner 2 werden in Ordner 1 gesucht...
            echo.
            
            echo Dateien aus Ordner 2, die in Ordner 1 fehlen:>>"%CLIPDATEI%"
            echo.>>"%CLIPDATEI%"
            
            for %%f in ("%ORDNER_2%\*.*") do (
                if exist "%%~f" (
                    set /a ANZAHL_ORDNER_2+=1
            
                    if /i "%MIT_ENDUNG%"=="JA" (
                        set "SUCHNAME=%%~nxf"
            
                        if exist "%ORDNER_1%\!SUCHNAME!" (
                            rem Datei wurde gefunden
                        ) else (
                            echo FEHLT IN ORDNER 1: "!SUCHNAME!"
                            echo !SUCHNAME!>>"%CLIPDATEI%"
                            set /a FEHLT_IN_ORDNER_1+=1
            
                            if "%TESTMODUS%"=="NEIN" (
                                echo !SUCHNAME!>>"%AUSGABE_1%"
                            )
                        )
                    ) else (
                        set "SUCHNAME=%%~nf"
                        set "GEFUNDEN=NEIN"
            
                        for %%z in ("%ORDNER_1%\!SUCHNAME!.*") do (
                            if exist "%%~z" set "GEFUNDEN=JA"
                        )
            
                        if "!GEFUNDEN!"=="NEIN" (
                            echo FEHLT IN ORDNER 1: "!SUCHNAME!"
                            echo !SUCHNAME!>>"%CLIPDATEI%"
                            set /a FEHLT_IN_ORDNER_1+=1
            
                            if "%TESTMODUS%"=="NEIN" (
                                echo !SUCHNAME!>>"%AUSGABE_1%"
                            )
                        )
                    )
                )
            )
            
            echo.>>"%CLIPDATEI%"
            echo Dateien aus Ordner 1, die in Ordner 2 fehlen:>>"%CLIPDATEI%"
            echo.>>"%CLIPDATEI%"
            
            echo.
            echo Dateien aus Ordner 1 werden in Ordner 2 gesucht...
            echo.
            
            for %%f in ("%ORDNER_1%\*.*") do (
                if exist "%%~f" (
                    set /a ANZAHL_ORDNER_1+=1
            
                    if /i "%MIT_ENDUNG%"=="JA" (
                        set "SUCHNAME=%%~nxf"
            
                        if exist "%ORDNER_2%\!SUCHNAME!" (
                            rem Datei wurde gefunden
                        ) else (
                            echo FEHLT IN ORDNER 2: "!SUCHNAME!"
                            echo !SUCHNAME!>>"%CLIPDATEI%"
                            set /a FEHLT_IN_ORDNER_2+=1
            
                            if "%TESTMODUS%"=="NEIN" (
                                echo !SUCHNAME!>>"%AUSGABE_2%"
                            )
                        )
                    ) else (
                        set "SUCHNAME=%%~nf"
                        set "GEFUNDEN=NEIN"
            
                        for %%z in ("%ORDNER_2%\!SUCHNAME!.*") do (
                            if exist "%%~z" set "GEFUNDEN=JA"
                        )
            
                        if "!GEFUNDEN!"=="NEIN" (
                            echo FEHLT IN ORDNER 2: "!SUCHNAME!"
                            echo !SUCHNAME!>>"%CLIPDATEI%"
                            set /a FEHLT_IN_ORDNER_2+=1
            
                            if "%TESTMODUS%"=="NEIN" (
                                echo !SUCHNAME!>>"%AUSGABE_2%"
                            )
                        )
                    )
                )
            )
            
            echo.>>"%CLIPDATEI%"
            echo Zusammenfassung:>>"%CLIPDATEI%"
            echo Dateien in Ordner 1: %ANZAHL_ORDNER_1%>>"%CLIPDATEI%"
            echo Dateien in Ordner 2: %ANZAHL_ORDNER_2%>>"%CLIPDATEI%"
            echo Fehlen in Ordner 1: %FEHLT_IN_ORDNER_1%>>"%CLIPDATEI%"
            echo Fehlen in Ordner 2: %FEHLT_IN_ORDNER_2%>>"%CLIPDATEI%"
            
            if "%TESTMODUS%"=="NEIN" (
                call :zusammenfassung_schreiben "%AUSGABE_1%" "%ORDNER_1%" "%ORDNER_2%" "%ANZAHL_ORDNER_1%" "%ANZAHL_ORDNER_2%" "%FEHLT_IN_ORDNER_1%"
                call :zusammenfassung_schreiben "%AUSGABE_2%" "%ORDNER_2%" "%ORDNER_1%" "%ANZAHL_ORDNER_2%" "%ANZAHL_ORDNER_1%" "%FEHLT_IN_ORDNER_2%"
            )
            
            type "%CLIPDATEI%" | clip
            
            echo.
            echo Fertig.
            echo.
            echo Dateien in Ordner 1: %ANZAHL_ORDNER_1%
            echo Dateien in Ordner 2: %ANZAHL_ORDNER_2%
            echo.
            echo Fehlen in Ordner 1: %FEHLT_IN_ORDNER_1%
            echo Fehlen in Ordner 2: %FEHLT_IN_ORDNER_2%
            echo.
            echo Die komplette Zusammenfassung wurde in die Zwischenablage kopiert.
            echo.
            
            if "%TESTMODUS%"=="JA" (
                echo Es wurden noch keine Ergebnisdateien erstellt.
                echo Wenn du Ergebnisdateien erstellen moechtest, entferne _test aus dem Dateinamen.
            ) else (
                echo Ergebnisdatei in Ordner 1:
                echo %AUSGABE_1%
                echo.
                echo Ergebnisdatei in Ordner 2:
                echo %AUSGABE_2%
            )
            
            echo.
            pause
            exit /b
            
            :kopf_schreiben
            set "DATEI=%~1"
            set "DIESER_ORDNER=%~2"
            set "ANDERER_ORDNER=%~3"
            
            echo Vergleichsergebnis>"%DATEI%"
            echo.>>"%DATEI%"
            echo Dieser Ordner:>>"%DATEI%"
            echo %DIESER_ORDNER%>>"%DATEI%"
            echo.>>"%DATEI%"
            echo Vergleich mit:>>"%DATEI%"
            echo %ANDERER_ORDNER%>>"%DATEI%"
            echo.>>"%DATEI%"
            echo Dateierweiterung beruecksichtigen: %MIT_ENDUNG%>>"%DATEI%"
            echo.>>"%DATEI%"
            echo Dateien, die in diesem Ordner fehlen:>>"%DATEI%"
            echo.>>"%DATEI%"
            exit /b
            
            :zusammenfassung_schreiben
            set "DATEI=%~1"
            set "DIESER_ORDNER=%~2"
            set "ANDERER_ORDNER=%~3"
            set "DATEIEN_DIESER_ORDNER=%~4"
            set "DATEIEN_ANDERER_ORDNER=%~5"
            set "FEHLEN_HIER=%~6"
            
            echo.>>"%DATEI%"
            echo Zusammenfassung:>>"%DATEI%"
            echo Dateien in diesem Ordner: %DATEIEN_DIESER_ORDNER%>>"%DATEI%"
            echo Dateien im Vergleichsordner: %DATEIEN_ANDERER_ORDNER%>>"%DATEI%"
            echo Dateien, die hier fehlen: %FEHLEN_HIER%>>"%DATEI%"
            echo.>>"%DATEI%"
            echo Vergleichsordner:>>"%DATEI%"
            echo %ANDERER_ORDNER%>>"%DATEI%"
            exit /b
            
            :falsche_anzahl
            echo Bitte genau zwei Ordner an dieses Skript senden.
            echo.
            echo Markiere im Explorer genau zwei Ordner,
            echo dann Rechtsklick - Senden an verwenden.
            echo.
            pause
            exit /b
            
            :erster_kein_ordner
            echo Der erste uebergebene Pfad ist kein Ordner:
            echo %~1
            echo.
            pause
            exit /b
            
            :zweiter_kein_ordner
            echo Der zweite uebergebene Pfad ist kein Ordner:
            echo %~2
            echo.
            pause
            exit /b

            Code der SendTo-Testvariante erklärt

            Genau zwei Parameter prüfen

            Die SendTo-Variante prüft, ob genau zwei Elemente übergeben wurden.

            Dadurch wird verhindert, dass versehentlich zu wenige oder zu viele Ordner verglichen werden.

            Prüfen, ob beide Parameter Ordner sind

            Beide übergebenen Elemente müssen Ordner sein.

            Wenn eines der Elemente kein Ordner ist, bricht das Skript mit einer Meldung ab.

            Beide Ordner in beide Richtungen vergleichen

            Auch die SendTo-Variante vergleicht beide Richtungen:

            • Dateien aus Ordner 1, die in Ordner 2 fehlen
            • Dateien aus Ordner 2, die in Ordner 1 fehlen

            Variante 4: SendTo-Variante mit Ergebnisdateien und Zwischenablage

            Die Datei heißt:

            010_sendto_zwei_ordner_vergleichen.bat

            Diese Variante erstellt Ergebnisdateien in den übergebenen Ordnern und kopiert zusätzlich die komplette Zusammenfassung in die Zwischenablage.

            Der komplette Code der SendTo-Ergebnisvariante

            @echo off
            REM ============================================================
            REM TOPTORIALS OFFICE - Batch Grundkurs
            REM Script: 010_sendto_zwei_ordner_vergleichen.bat
            REM Beschreibung: Vergleicht zwei uebergebene Ordner und listet fehlende Dateien auf.
            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.
            setlocal enabledelayedexpansion
            
            set "TESTMODUS=NEIN"
            
            set /a ANZAHL_ORDNER_1=0
            set /a ANZAHL_ORDNER_2=0
            set /a FEHLT_IN_ORDNER_1=0
            set /a FEHLT_IN_ORDNER_2=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 "ZEITSTEMPEL=%DATUM%_%ZEIT%"
            
            set "CLIPDATEI=%TEMP%\vergleich_zwischenablage_%ZEITSTEMPEL%.txt"
            
            if "%~1"=="" goto falsche_anzahl
            if "%~2"=="" goto falsche_anzahl
            if not "%~3"=="" goto falsche_anzahl
            
            if not exist "%~1\" goto erster_kein_ordner
            if not exist "%~2\" goto zweiter_kein_ordner
            
            set "ORDNER_1=%~1"
            set "ORDNER_2=%~2"
            
            set "AUSGABE_1=%ORDNER_1%\vergleich_fehlt_hier_%ZEITSTEMPEL%.txt"
            set "AUSGABE_2=%ORDNER_2%\vergleich_fehlt_hier_%ZEITSTEMPEL%.txt"
            
            echo Zwei Ordner werden miteinander verglichen...
            echo.
            echo Ordner 1:
            echo %ORDNER_1%
            echo.
            echo Ordner 2:
            echo %ORDNER_2%
            echo.
            echo Testmodus: %TESTMODUS%
            echo.
            
            echo Soll die Dateierweiterung beim Vergleich beruecksichtigt werden?
            echo.
            echo JA   = kompletter Dateiname wird verglichen, z.B. Datei.pdf
            echo NEIN = nur der Name ohne Erweiterung wird verglichen, z.B. Datei
            echo.
            set /p "MIT_ENDUNG=Dateierweiterung beruecksichtigen? JA/NEIN: "
            
            if /i "%MIT_ENDUNG%"=="JA" goto vergleich_start
            if /i "%MIT_ENDUNG%"=="NEIN" goto vergleich_start
            
            echo.
            echo Ungueltige Eingabe.
            echo Bitte JA oder NEIN eingeben.
            echo.
            pause
            exit /b
            
            :vergleich_start
            echo.
            echo Vergleich startet...
            echo.
            
            if exist "%CLIPDATEI%" del "%CLIPDATEI%"
            
            echo Vergleichsergebnis>"%CLIPDATEI%"
            echo.>>"%CLIPDATEI%"
            echo Ordner 1:>>"%CLIPDATEI%"
            echo %ORDNER_1%>>"%CLIPDATEI%"
            echo.>>"%CLIPDATEI%"
            echo Ordner 2:>>"%CLIPDATEI%"
            echo %ORDNER_2%>>"%CLIPDATEI%"
            echo.>>"%CLIPDATEI%"
            echo Dateierweiterung beruecksichtigen: %MIT_ENDUNG%>>"%CLIPDATEI%"
            echo Testmodus: %TESTMODUS%>>"%CLIPDATEI%"
            echo.>>"%CLIPDATEI%"
            
            if "%TESTMODUS%"=="NEIN" (
                call :kopf_schreiben "%AUSGABE_1%" "%ORDNER_1%" "%ORDNER_2%"
                call :kopf_schreiben "%AUSGABE_2%" "%ORDNER_2%" "%ORDNER_1%"
            )
            
            echo Dateien aus Ordner 2 werden in Ordner 1 gesucht...
            echo.
            
            echo Dateien aus Ordner 2, die in Ordner 1 fehlen:>>"%CLIPDATEI%"
            echo.>>"%CLIPDATEI%"
            
            for %%f in ("%ORDNER_2%\*.*") do (
                if exist "%%~f" (
                    set /a ANZAHL_ORDNER_2+=1
            
                    if /i "%MIT_ENDUNG%"=="JA" (
                        set "SUCHNAME=%%~nxf"
            
                        if exist "%ORDNER_1%\!SUCHNAME!" (
                            rem Datei wurde gefunden
                        ) else (
                            echo FEHLT IN ORDNER 1: "!SUCHNAME!"
                            echo !SUCHNAME!>>"%CLIPDATEI%"
                            set /a FEHLT_IN_ORDNER_1+=1
            
                            if "%TESTMODUS%"=="NEIN" (
                                echo !SUCHNAME!>>"%AUSGABE_1%"
                            )
                        )
                    ) else (
                        set "SUCHNAME=%%~nf"
                        set "GEFUNDEN=NEIN"
            
                        for %%z in ("%ORDNER_1%\!SUCHNAME!.*") do (
                            if exist "%%~z" set "GEFUNDEN=JA"
                        )
            
                        if "!GEFUNDEN!"=="NEIN" (
                            echo FEHLT IN ORDNER 1: "!SUCHNAME!"
                            echo !SUCHNAME!>>"%CLIPDATEI%"
                            set /a FEHLT_IN_ORDNER_1+=1
            
                            if "%TESTMODUS%"=="NEIN" (
                                echo !SUCHNAME!>>"%AUSGABE_1%"
                            )
                        )
                    )
                )
            )
            
            echo.>>"%CLIPDATEI%"
            echo Dateien aus Ordner 1, die in Ordner 2 fehlen:>>"%CLIPDATEI%"
            echo.>>"%CLIPDATEI%"
            
            echo.
            echo Dateien aus Ordner 1 werden in Ordner 2 gesucht...
            echo.
            
            for %%f in ("%ORDNER_1%\*.*") do (
                if exist "%%~f" (
                    set /a ANZAHL_ORDNER_1+=1
            
                    if /i "%MIT_ENDUNG%"=="JA" (
                        set "SUCHNAME=%%~nxf"
            
                        if exist "%ORDNER_2%\!SUCHNAME!" (
                            rem Datei wurde gefunden
                        ) else (
                            echo FEHLT IN ORDNER 2: "!SUCHNAME!"
                            echo !SUCHNAME!>>"%CLIPDATEI%"
                            set /a FEHLT_IN_ORDNER_2+=1
            
                            if "%TESTMODUS%"=="NEIN" (
                                echo !SUCHNAME!>>"%AUSGABE_2%"
                            )
                        )
                    ) else (
                        set "SUCHNAME=%%~nf"
                        set "GEFUNDEN=NEIN"
            
                        for %%z in ("%ORDNER_2%\!SUCHNAME!.*") do (
                            if exist "%%~z" set "GEFUNDEN=JA"
                        )
            
                        if "!GEFUNDEN!"=="NEIN" (
                            echo FEHLT IN ORDNER 2: "!SUCHNAME!"
                            echo !SUCHNAME!>>"%CLIPDATEI%"
                            set /a FEHLT_IN_ORDNER_2+=1
            
                            if "%TESTMODUS%"=="NEIN" (
                                echo !SUCHNAME!>>"%AUSGABE_2%"
                            )
                        )
                    )
                )
            )
            
            echo.>>"%CLIPDATEI%"
            echo Zusammenfassung:>>"%CLIPDATEI%"
            echo Dateien in Ordner 1: %ANZAHL_ORDNER_1%>>"%CLIPDATEI%"
            echo Dateien in Ordner 2: %ANZAHL_ORDNER_2%>>"%CLIPDATEI%"
            echo Fehlen in Ordner 1: %FEHLT_IN_ORDNER_1%>>"%CLIPDATEI%"
            echo Fehlen in Ordner 2: %FEHLT_IN_ORDNER_2%>>"%CLIPDATEI%"
            
            if "%TESTMODUS%"=="NEIN" (
                call :zusammenfassung_schreiben "%AUSGABE_1%" "%ORDNER_1%" "%ORDNER_2%" "%ANZAHL_ORDNER_1%" "%ANZAHL_ORDNER_2%" "%FEHLT_IN_ORDNER_1%"
                call :zusammenfassung_schreiben "%AUSGABE_2%" "%ORDNER_2%" "%ORDNER_1%" "%ANZAHL_ORDNER_2%" "%ANZAHL_ORDNER_1%" "%FEHLT_IN_ORDNER_2%"
            )
            
            type "%CLIPDATEI%" | clip
            
            echo.
            echo Fertig.
            echo.
            echo Dateien in Ordner 1: %ANZAHL_ORDNER_1%
            echo Dateien in Ordner 2: %ANZAHL_ORDNER_2%
            echo.
            echo Fehlen in Ordner 1: %FEHLT_IN_ORDNER_1%
            echo Fehlen in Ordner 2: %FEHLT_IN_ORDNER_2%
            echo.
            echo Die komplette Zusammenfassung wurde in die Zwischenablage kopiert.
            echo.
            
            if "%TESTMODUS%"=="JA" (
                echo Es wurden noch keine Ergebnisdateien erstellt.
                echo Wenn du Ergebnisdateien erstellen moechtest, entferne _test aus dem Dateinamen.
            ) else (
                echo Ergebnisdatei in Ordner 1:
                echo %AUSGABE_1%
                echo.
                echo Ergebnisdatei in Ordner 2:
                echo %AUSGABE_2%
            )
            
            echo.
            pause
            exit /b
            
            :kopf_schreiben
            set "DATEI=%~1"
            set "DIESER_ORDNER=%~2"
            set "ANDERER_ORDNER=%~3"
            
            echo Vergleichsergebnis>"%DATEI%"
            echo.>>"%DATEI%"
            echo Dieser Ordner:>>"%DATEI%"
            echo %DIESER_ORDNER%>>"%DATEI%"
            echo.>>"%DATEI%"
            echo Vergleich mit:>>"%DATEI%"
            echo %ANDERER_ORDNER%>>"%DATEI%"
            echo.>>"%DATEI%"
            echo Dateierweiterung beruecksichtigen: %MIT_ENDUNG%>>"%DATEI%"
            echo.>>"%DATEI%"
            echo Dateien, die in diesem Ordner fehlen:>>"%DATEI%"
            echo.>>"%DATEI%"
            exit /b
            
            :zusammenfassung_schreiben
            set "DATEI=%~1"
            set "DIESER_ORDNER=%~2"
            set "ANDERER_ORDNER=%~3"
            set "DATEIEN_DIESER_ORDNER=%~4"
            set "DATEIEN_ANDERER_ORDNER=%~5"
            set "FEHLEN_HIER=%~6"
            
            echo.>>"%DATEI%"
            echo Zusammenfassung:>>"%DATEI%"
            echo Dateien in diesem Ordner: %DATEIEN_DIESER_ORDNER%>>"%DATEI%"
            echo Dateien im Vergleichsordner: %DATEIEN_ANDERER_ORDNER%>>"%DATEI%"
            echo Dateien, die hier fehlen: %FEHLEN_HIER%>>"%DATEI%"
            echo.>>"%DATEI%"
            echo Vergleichsordner:>>"%DATEI%"
            echo %ANDERER_ORDNER%>>"%DATEI%"
            exit /b
            
            :falsche_anzahl
            echo Bitte genau zwei Ordner an dieses Skript senden.
            echo.
            echo Markiere im Explorer genau zwei Ordner,
            echo dann Rechtsklick - Senden an verwenden.
            echo.
            pause
            exit /b
            
            :erster_kein_ordner
            echo Der erste uebergebene Pfad ist kein Ordner:
            echo %~1
            echo.
            pause
            exit /b
            
            :zweiter_kein_ordner
            echo Der zweite uebergebene Pfad ist kein Ordner:
            echo %~2
            echo.
            pause
            exit /b

            Wichtige Unterschiede der SendTo-Ergebnisvariante

            Ergebnisdateien in den Ordnern

            In jedem der beiden übergebenen Ordner wird eine passende Ergebnisdatei erstellt.

            Darin steht, welche Dateien aus dem jeweils anderen Ordner in diesem Ordner fehlen.

            Zusammenfassung in der Zwischenablage

            Zusätzlich wird eine komplette Zusammenfassung in die Windows-Zwischenablage kopiert.

            Dadurch kann das Ergebnis direkt in eine E-Mail, ein Dokument, einen Chat oder eine Webseite eingefügt werden.

            Robuste Ausgabe in Zwischenablage und Ergebnisdateien

            Auch bei der SendTo-Ergebnisvariante wird die Umleitung bewusst vor den echo-Befehl gesetzt.

            >>"%CLIPDATEI%" echo Dateien in Ordner 1: %ANZAHL_ORDNER_1%

            Diese Schreibweise verhindert, dass Batch Zahlen direkt vor einer Umleitung falsch interpretiert. Das ist besonders wichtig bei Zusammenfassungen, weil dort häufig Zeilen mit Zahlen enden.

            Wie wird die SendTo-Variante eingerichtet?

            Die SendTo-Batchdatei oder eine Verknüpfung davon kann in den Windows-Ordner Senden an gelegt werden.

            Den SendTo-Ordner öffnet man mit:

            shell:sendto

            Danach kann man im Explorer genau zwei Ordner markieren und mit Rechtsklick > Senden an an das Skript übergeben.

            Mit der Testumgebung kannst du zum Beispiel diese beiden Ordner markieren:

            C:\TOPTORIALS_CODE\1000_TESTBEREICH\TOPTORIALS_Testdaten_Windows_Automatisierung_Batch_V001\010_Fehlende_Dateien_vergleichen\02_SendTo_Zwei_Ordner_vergleichen\Ordner_A
            
            C:\TOPTORIALS_CODE\1000_TESTBEREICH\TOPTORIALS_Testdaten_Windows_Automatisierung_Batch_V001\010_Fehlende_Dateien_vergleichen\02_SendTo_Zwei_Ordner_vergleichen\Ordner_B

            Was passiert im Testmodus?

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

            Die Testvariante erstellt keine endgültigen Ergebnisdateien.

            Das ist praktisch, um erst zu prüfen, ob die richtigen Ordner verglichen werden und ob die Abfrage mit oder ohne Dateierweiterung korrekt gewählt wurde.

            Was wird verglichen?

            Das Skript vergleicht Dateinamen.

            Es vergleicht nicht:

            • Dateiinhalte
            • Dateigrößen
            • Änderungsdaten
            • Prüfsummen
            • Unterordnerstrukturen

            Das Skript ist also ein Dateinamenvergleich, kein vollständiger Inhaltsvergleich.

            Werden Unterordner durchsucht?

            Nein. Die Skripte vergleichen nur die Dateien direkt in den beiden ausgewählten Ordnern.

            Unterordner werden nicht rekursiv durchsucht.

            Das ist bewusst so gehalten, damit das Skript übersichtlich bleibt und der Vergleich klar nachvollziehbar ist.

            Typische Beispiele

            RAW/JPG-Vergleich ohne Dateierweiterung

            Ordner 1:
            Bild_001.CR3
            Bild_002.CR3
            Bild_003.CR3
            
            Ordner 2:
            Bild_001.JPG
            Bild_003.JPG
            Bild_004.JPG

            Ergebnis ohne Dateierweiterung:

            Bild_002 fehlt in Ordner 2.
            Bild_004 fehlt in Ordner 1.

            Exakter Vergleich mit Dateierweiterung

            Ordner 1:
            Rechnung.pdf
            
            Ordner 2:
            Rechnung.docx

            Ergebnis mit Dateierweiterung:

            Rechnung.pdf fehlt in Ordner 2.
            Rechnung.docx fehlt in Ordner 1.

            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:

            010_fehlende_dateien_vergleichen_test.bat

            und nicht:

            010_fehlende_dateien_vergleichen_test.bat.txt

            Die SendTo-Variante meldet, dass genau zwei Ordner benötigt werden

            Dann wurden entweder zu wenige oder zu viele Elemente übergeben.

            Für diese Variante müssen genau zwei Ordner im Explorer markiert werden.

            Eine Datei wurde statt eines Ordners übergeben

            Die SendTo-Variante erwartet Ordner. Dateien werden nicht als Eingabe akzeptiert.

            Das Ergebnis ist leer

            Dann wurden keine fehlenden Dateien gefunden. Das bedeutet, dass beide Ordner nach der gewählten Vergleichsart denselben Dateibestand enthalten.

            RAW und JPG werden als unterschiedlich erkannt

            Dann wurde wahrscheinlich der Vergleich mit Dateierweiterung gewählt.

            Für RAW/JPG-Vergleiche sollte ohne Dateierweiterung verglichen werden.

            Was haben wir gelernt?

            In diesem Teil wurden mehrere wichtige Batch-Grundlagen gezeigt:

            Zwei Ordner können anhand ihrer Dateinamen verglichen werden.
            Ein Vergleich kann mit oder ohne Dateierweiterung erfolgen.
            for kann Dateien in einem Ordner durchlaufen.
            if exist kann prüfen, ob eine passende Datei vorhanden ist.
            %~nxf kann Dateiname und Erweiterung liefern.
            %~nf kann den Dateinamen ohne Erweiterung liefern.
            SendTo-Skripte können genau zwei Ordner entgegennehmen.
            Ergebnisdateien können mit Zeitstempel erzeugt werden.
            clip kann eine Zusammenfassung in die Zwischenablage kopieren.
            Umleitungen können vor den echo-Befehl gesetzt werden, damit Zahlen am Zeilenende zuverlässig geschrieben werden.

            Damit ist dieses Skript-Paket ein nützlicher Abschluss des Batch-Grundkurses. Es zeigt, wie man mit Batch nicht nur Dateien erstellt, umbenennt oder kopiert, sondern auch einfache Kontroll- und Vergleichsaufgaben automatisieren kann.

            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

            • Batch Grundkurs 010: Fehlende Dateien in zwei Ordnern finden
            • Python Grundkurs Teil 009: Projektordner mit Datum und Protokolldatei sichern
            • PowerShell 7 Grundkurs Teil 009: Projektordner mit Datum und Logdatei sichern
            • Batch Grundkurs 009: Backup mit Zeitstempel und robocopy erstellen
            • Python Grundkurs Teil 008: Text in Dateinamen ersetzen

            Neue Kommentare

            • Chris zu Zeilen, Spalten, Fenster fixieren (FreeOffice PlanMaker)
            • Herbert Krüger zu Zeilen, Spalten, Fenster fixieren (FreeOffice PlanMaker)
            • Chris zu Tutorial Wunsch Liste
            • Rupert zu Tutorial Wunsch Liste
            • Axel zu Datumsformat anpassen (LibreOffice Calc)
            • Klaus zu Dynamischen Monatskalender erstellen + Download (LibreOffice Calc)

            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 Windows Automatisierung wps spreadsheets Zeilen Zelle Zellen
            KONTAKT   IMPRESSUM    DATENSCHUTZERKLÄRUNG    HAFTUNGSAUSSCHLUSS (Disclaimer)   © copyright TOPTORIALS