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

            Batch Grundkurs 009: Backup mit Zeitstempel und robocopy erstellen

            • Startseite
            • Tutorials Windows Automatisierung Batch Grundkurs
            • Batch Grundkurs 009: Backup mit Zeitstempel und robocopy erstellen

            Batch Grundkurs 009: Backup mit Datum erstellen

            Worum geht es in diesem Teil?

            In diesem neunten Teil des Batch-Grundkurses erstellen wir automatisch Backups mit Datum und Uhrzeit im Ordnernamen.

            Das Skript legt innerhalb eines Projektordners einen Backup-Hauptordner an und erstellt darin für jede Sicherung einen neuen Backup-Ordner mit Zeitstempel.

            Beispiel:

            Projektordner
            ├── Datei1.txt
            ├── Dokumentation.pdf
            ├── Daten
            └── Backups
                └── Backup_2026-06-27_14-35-20
            
            
            Ordner Backups mit Backup Ordner

            Ordner Backups mit Backup Ordner

            Dadurch kann man Projektstände sehr einfach sichern, ohne jedes Mal manuell einen neuen Backup-Ordner anlegen zu müssen.

            Warum ist dieses Beispiel praktisch?

            Backups sind im Alltag extrem wichtig. Besonders bei Projektordnern, Steuerunterlagen, Webseiten, Skripten, Videoprojekten oder Office-Dateien möchte man oft einen Stand sichern, bevor man weiterarbeitet.

            Typische Situationen:

            Vor größeren Änderungen ein Projekt sichern
            Vor dem Umbenennen vieler Dateien eine Kopie erstellen
            Vor dem Sortieren oder Verschieben von Dateien absichern
            Arbeitsstände mit Datum archivieren
            Projektordner für später nachvollziehbar sichern

            Dieses Skript nutzt robocopy, ein leistungsfähiges Windows-Werkzeug zum Kopieren von Dateien und Ordnern.

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

            Download Batch Grundkurs: 009_Backup_mit_Datum 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\009_Backup_mit_Datum

            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\009_Backup_mit_Datum

            Du musst die Testumgebung aber nicht verwenden. Die Batchdateien funktionieren auch mit eigenen Projektordnern. 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 kopiert Dateien und Ordner. Es löscht keine Dateien und verwendet bewusst kein Spiegeln mit /MIR. Trotzdem sollte man Backups immer zuerst in einer Testumgebung ausprobieren.

            Enthaltene Skripte

            Zu diesem Teil gehören vier Batchdateien:

            009_backup_mit_datum_test.bat
            009_backup_mit_datum_mit_log.bat
            009_sendto_backup_mit_datum_mit_log_test.bat
            009_sendto_backup_mit_datum_mit_log.bat

            Welche Variante brauche ich?

            • Projektordner-Variante im Testmodus: Wenn die Batchdatei direkt im Projektordner liegt und nur angezeigt werden soll, was kopiert würde.
            • Projektordner-Variante mit Log: Wenn die Batchdatei direkt im Projektordner liegt und ein echtes Backup mit Protokoll erstellt werden soll.
            • SendTo-Testvariante: Wenn ein oder mehrere Projektordner per Rechtsklick übergeben werden und nur eine Vorschau erzeugt werden soll.
            • SendTo-Logvariante: Wenn ein oder mehrere Projektordner per Rechtsklick übergeben und echte Backups mit Protokoll erstellt werden sollen.

            Grundprinzip des Backups

            Das Skript erstellt im jeweiligen Projektordner einen Backup-Hauptordner. Standardmäßig heißt dieser Ordner:

            Backups

            In diesem Ordner wird für jede Sicherung ein neuer Unterordner mit Zeitstempel erstellt.

            Beispiel:

            Backups
            ├── Backup_2026-06-27_14-35-20
            ├── Backup_2026-06-28_09-10-05
            └── Backup_2026-06-29_18-22-11

            Der Backup-Hauptordner selbst wird vom Backup ausgeschlossen, damit alte Backups nicht wieder in neue Backups kopiert werden.

            Variante 1: Backup im aktuellen Projektordner testen

            Die Datei heißt:

            009_backup_mit_datum_test.bat

            Diese Variante wird direkt in den Projektordner kopiert, der gesichert werden soll.

            Solange _test im Dateinamen steht, verwendet das Skript robocopy mit /L. Dadurch wird nur aufgelistet, was kopiert würde. Es wird noch nichts tatsächlich kopiert.

            Der komplette Code der Testvariante

            @echo off
            REM ============================================================
            REM TOPTORIALS OFFICE - Batch Grundkurs
            REM Script: 009_backup_mit_datum_test.bat
            REM Beschreibung: Sichert einen Projektordner in einen datierten Backupordner.
            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"
            
            rem Name des Backup-Hauptordners
            set "BACKUP_HAUPTORDNER=Backups"
            
            rem Ausschlusslisten vorbereiten
            set "AUSGESCHLOSSENE_ORDNER="
            set "AUSGESCHLOSSENE_DATEIEN="
            
            rem Zusaetzliche Ordner ausschliessen
            rem Jeder Ordner bekommt eine eigene Zeile.
            rem Dadurch funktionieren auch Namen mit Leerzeichen.
            call :ordner_ausschliessen "Temp"
            call :ordner_ausschliessen "Cache"
            call :ordner_ausschliessen "Alte Dateien"
            
            rem Dateien oder Dateimuster ausschliessen
            rem Hier koennen komplette Dateinamen oder Muster eingetragen werden.
            call :datei_ausschliessen "desktop.ini"
            call :datei_ausschliessen "thumbs.db"
            call :datei_ausschliessen "*.tmp"
            call :datei_ausschliessen "*.log"
            call :datei_ausschliessen "*.bak"
            
            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 "QUELLORDNER=%cd%"
            set "BACKUP_PFAD=%QUELLORDNER%\%BACKUP_HAUPTORDNER%"
            set "ZIELORDNER=%BACKUP_PFAD%\Backup_%ZEITSTEMPEL%"
            
            echo Backup mit Datum wird vorbereitet...
            echo.
            echo Quellordner:
            echo %QUELLORDNER%
            echo.
            echo Backup-Hauptordner:
            echo %BACKUP_PFAD%
            echo.
            echo Zielordner:
            echo %ZIELORDNER%
            echo.
            echo Testmodus: %TESTMODUS%
            echo.
            echo Ausgeschlossene Ordner:
            echo !AUSGESCHLOSSENE_ORDNER!
            echo.
            echo Ausgeschlossene Dateien / Dateimuster:
            echo !AUSGESCHLOSSENE_DATEIEN!
            echo.
            
            if "%TESTMODUS%"=="JA" goto start
            
            echo ACHTUNG: Dieses Skript erstellt jetzt wirklich ein Backup.
            echo.
            set /p "ANTWORT=Zum Fortfahren JA eingeben: "
            
            if /i "%ANTWORT%"=="JA" goto start
            
            echo.
            echo Abgebrochen.
            echo.
            pause
            exit /b
            
            :start
            echo.
            
            if "%TESTMODUS%"=="JA" (
                echo Testmodus aktiv.
                echo Es wird nur angezeigt, was kopiert wuerde.
                echo.
            
                robocopy "%QUELLORDNER%" "%ZIELORDNER%" /E /L /XJ /R:1 /W:1 /XD "%BACKUP_PFAD%" !AUSGESCHLOSSENE_ORDNER! /XF !AUSGESCHLOSSENE_DATEIEN!
            ) else (
                if not exist "%BACKUP_PFAD%" mkdir "%BACKUP_PFAD%"
            
                echo Backup wird erstellt...
                echo.
            
                robocopy "%QUELLORDNER%" "%ZIELORDNER%" /E /XJ /R:1 /W:1 /XD "%BACKUP_PFAD%" !AUSGESCHLOSSENE_ORDNER! /XF !AUSGESCHLOSSENE_DATEIEN!
            )
            
            echo.
            echo Fertig.
            echo.
            
            if "%TESTMODUS%"=="JA" (
                echo Es wurde noch nichts kopiert.
                echo Wenn alles richtig aussieht, entferne _test aus dem Dateinamen.
            ) else (
                echo Backup wurde erstellt:
                echo %ZIELORDNER%
            )
            
            echo.
            pause
            exit /b
            
            :ordner_ausschliessen
            set "AUSGESCHLOSSENE_ORDNER=!AUSGESCHLOSSENE_ORDNER! "%~1""
            exit /b
            
            :datei_ausschliessen
            set "AUSGESCHLOSSENE_DATEIEN=!AUSGESCHLOSSENE_DATEIEN! "%~1""
            exit /b

            Code der 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 nur eine Vorschau angezeigt.

            Backup-Ordner festlegen

            set "BACKUP_ORDNER=Backups"

            Mit dieser Variable wird der Name des Backup-Hauptordners festgelegt.

            Wenn du einen anderen Namen verwenden möchtest, kannst du diese Zeile anpassen.

            Zeitstempel erzeugen

            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%"

            Diese Zeilen erzeugen einen Zeitstempel aus Datum und Uhrzeit.

            Der Zeitstempel wird später für den Namen des Backup-Ordners verwendet.

            Quell- und Zielordner setzen

            set "QUELLE=%CD%"
            set "BACKUP_ROOT=%QUELLE%\%BACKUP_ORDNER%"
            set "ZIEL=%BACKUP_ROOT%\Backup_%ZEITSTEMPEL%"

            %CD% steht für den aktuellen Ordner. In der Projektordner-Variante ist das der Ordner, in dem die Batchdatei gestartet wurde.

            BACKUP_ROOT ist der Backup-Hauptordner.

            ZIEL ist der konkrete neue Backup-Ordner mit Zeitstempel.

            Backup-Hauptordner erstellen

            if not exist "%BACKUP_ROOT%" mkdir "%BACKUP_ROOT%"

            Falls der Ordner Backups noch nicht existiert, wird er erstellt.

            robocopy verwenden

            Das eigentliche Kopieren übernimmt robocopy.

            Im Testmodus wird zusätzlich /L verwendet. Dadurch listet robocopy nur auf, was passieren würde.

            Wichtig: Dieses Skript verwendet bewusst kein /MIR. Dadurch wird nichts gespiegelt und nichts gelöscht.

            Variante 2: Backup mit Logdatei im aktuellen Projektordner

            Die Datei heißt:

            009_backup_mit_datum_mit_log.bat

            Diese Variante erstellt ein echtes Backup und schreibt zusätzlich ein Protokoll direkt in den Backup-Ordner.

            Der komplette Code der Log-Variante

            @echo off
            REM ============================================================
            REM TOPTORIALS OFFICE - Batch Grundkurs
            REM Script: 009_backup_mit_datum_mit_log.bat
            REM Beschreibung: Sichert einen Projektordner in einen datierten Backupordner und schreibt ein Log.
            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"
            
            rem Name des Backup-Hauptordners
            set "BACKUP_HAUPTORDNER=Backups"
            
            rem Ausschlusslisten vorbereiten
            set "AUSGESCHLOSSENE_ORDNER="
            set "AUSGESCHLOSSENE_DATEIEN="
            
            rem Zusaetzliche Ordner ausschliessen
            rem Jeder Ordner bekommt eine eigene Zeile.
            rem Dadurch funktionieren auch Namen mit Leerzeichen.
            call :ordner_ausschliessen "Temp"
            call :ordner_ausschliessen "Cache"
            call :ordner_ausschliessen "Alte Dateien"
            
            rem Dateien oder Dateimuster ausschliessen
            rem Hier koennen komplette Dateinamen oder Muster eingetragen werden.
            call :datei_ausschliessen "desktop.ini"
            call :datei_ausschliessen "thumbs.db"
            call :datei_ausschliessen "*.tmp"
            call :datei_ausschliessen "*.log"
            call :datei_ausschliessen "*.bak"
            
            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 "QUELLORDNER=%cd%"
            set "BACKUP_PFAD=%QUELLORDNER%\%BACKUP_HAUPTORDNER%"
            set "ZIELORDNER=%BACKUP_PFAD%\Backup_%ZEITSTEMPEL%"
            set "LOGDATEI=%ZIELORDNER%\backup_protokoll_%ZEITSTEMPEL%.log"
            
            echo Backup mit Datum wird vorbereitet...
            echo.
            echo Quellordner:
            echo %QUELLORDNER%
            echo.
            echo Backup-Hauptordner:
            echo %BACKUP_PFAD%
            echo.
            echo Zielordner:
            echo %ZIELORDNER%
            echo.
            echo Logdatei:
            echo %LOGDATEI%
            echo.
            echo Testmodus: %TESTMODUS%
            echo.
            echo Ausgeschlossene Ordner:
            echo !AUSGESCHLOSSENE_ORDNER!
            echo.
            echo Ausgeschlossene Dateien / Dateimuster:
            echo !AUSGESCHLOSSENE_DATEIEN!
            echo.
            
            if "%TESTMODUS%"=="JA" goto start
            
            echo ACHTUNG: Dieses Skript erstellt jetzt wirklich ein Backup.
            echo.
            set /p "ANTWORT=Zum Fortfahren JA eingeben: "
            
            if /i "%ANTWORT%"=="JA" goto start
            
            echo.
            echo Abgebrochen.
            echo.
            pause
            exit /b
            
            :start
            echo.
            
            if "%TESTMODUS%"=="JA" (
                echo Testmodus aktiv.
                echo Es wird nur angezeigt, was kopiert wuerde.
                echo Im Testmodus wird noch keine Logdatei im Backup-Ordner erstellt.
                echo.
            
                robocopy "%QUELLORDNER%" "%ZIELORDNER%" /E /L /XJ /R:1 /W:1 /XD "%BACKUP_PFAD%" !AUSGESCHLOSSENE_ORDNER! /XF !AUSGESCHLOSSENE_DATEIEN!
            ) else (
                if not exist "%BACKUP_PFAD%" mkdir "%BACKUP_PFAD%"
                if not exist "%ZIELORDNER%" mkdir "%ZIELORDNER%"
            
                echo Backup wird erstellt...
                echo.
            
                robocopy "%QUELLORDNER%" "%ZIELORDNER%" /E /XJ /R:1 /W:1 /TEE /UNILOG:"%LOGDATEI%" /XD "%BACKUP_PFAD%" !AUSGESCHLOSSENE_ORDNER! /XF !AUSGESCHLOSSENE_DATEIEN!
            )
            
            echo.
            echo Fertig.
            echo.
            
            if "%TESTMODUS%"=="JA" (
                echo Es wurde noch nichts kopiert.
                echo Wenn alles richtig aussieht, entferne _test aus dem Dateinamen.
            ) else (
                echo Backup wurde erstellt:
                echo %ZIELORDNER%
                echo.
                echo Logdatei wurde erstellt:
                echo %LOGDATEI%
            )
            
            echo.
            pause
            exit /b
            
            :ordner_ausschliessen
            set "AUSGESCHLOSSENE_ORDNER=!AUSGESCHLOSSENE_ORDNER! "%~1""
            exit /b
            
            :datei_ausschliessen
            set "AUSGESCHLOSSENE_DATEIEN=!AUSGESCHLOSSENE_DATEIEN! "%~1""
            exit /b

            Wichtige Unterschiede der Log-Variante

            Logdatei im Backup-Ordner

            Die Logdatei wird direkt im jeweiligen Backup-Ordner gespeichert.

            Beispiel:

            Backups\Backup_2026-06-27_14-35-20\backup_protokoll_2026-06-27_14-35-20.log

            Dadurch gehört das Protokoll direkt zu dem Backup, das erstellt wurde.

            Unicode-Log für Umlaute

            Für das Protokoll wird /UNILOG verwendet. Dadurch wird das robocopy-Protokoll als Unicode-Datei geschrieben.

            Das ist besonders hilfreich, wenn Datei- oder Ordnernamen Umlaute enthalten.

            Ausgabe im Fenster und im Log

            Mit /TEE zeigt robocopy die Ausgabe im Fenster an und schreibt sie gleichzeitig in die Logdatei.

            Variante 3: SendTo-Testvariante für Projektordner

            Die Datei heißt:

            009_sendto_backup_mit_datum_mit_log_test.bat

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

            Man kann einen oder mehrere Projektordner im Explorer markieren und an das Skript senden. Im Testmodus wird nur angezeigt, was kopiert würde.

            Der komplette Code der SendTo-Testvariante

            @echo off
            REM ============================================================
            REM TOPTORIALS OFFICE - Batch Grundkurs
            REM Script: 009_sendto_backup_mit_datum_mit_log_test.bat
            REM Beschreibung: Sichert uebergebene Projektordner in datierte Backupordner und schreibt ein Log.
            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"
            
            rem Name des Backup-Hauptordners innerhalb des jeweiligen Projektordners
            set "BACKUP_HAUPTORDNER=Backups"
            
            rem Ausschlusslisten vorbereiten
            set "AUSGESCHLOSSENE_ORDNER="
            set "AUSGESCHLOSSENE_DATEIEN="
            
            rem Zusaetzliche Ordner ausschliessen
            rem Jeder Ordner bekommt eine eigene Zeile.
            rem Dadurch funktionieren auch Namen mit Leerzeichen.
            call :ordner_ausschliessen "Temp"
            call :ordner_ausschliessen "Cache"
            call :ordner_ausschliessen "Alte Dateien"
            
            rem Dateien oder Dateimuster ausschliessen
            rem Hier koennen komplette Dateinamen oder Muster eingetragen werden.
            call :datei_ausschliessen "desktop.ini"
            call :datei_ausschliessen "thumbs.db"
            call :datei_ausschliessen "*.tmp"
            call :datei_ausschliessen "*.log"
            call :datei_ausschliessen "*.bak"
            
            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%"
            
            if "%~1"=="" goto keine_parameter
            
            echo SendTo Backup mit Datum wird vorbereitet...
            echo.
            echo Testmodus: %TESTMODUS%
            echo Zeitstempel: %ZEITSTEMPEL%
            echo.
            echo Ausgeschlossene Ordner:
            echo !AUSGESCHLOSSENE_ORDNER!
            echo.
            echo Ausgeschlossene Dateien / Dateimuster:
            echo !AUSGESCHLOSSENE_DATEIEN!
            echo.
            
            if "%TESTMODUS%"=="JA" goto start
            
            echo ACHTUNG: Dieses Skript erstellt jetzt wirklich Backups.
            echo.
            set /p "ANTWORT=Zum Fortfahren JA eingeben: "
            
            if /i "%ANTWORT%"=="JA" goto start
            
            echo.
            echo Abgebrochen.
            echo.
            pause
            exit /b
            
            :start
            echo.
            
            :ordner_loop
            if "%~1"=="" goto fertig
            
            if exist "%~1\" goto ordner_verarbeiten
            
            echo UEBERSPRUNGEN: "%~1" ist kein Ordner.
            echo.
            shift
            goto ordner_loop
            
            :ordner_verarbeiten
            set "QUELLORDNER=%~1"
            set "BACKUP_PFAD=%QUELLORDNER%\%BACKUP_HAUPTORDNER%"
            set "ZIELORDNER=%BACKUP_PFAD%\Backup_%ZEITSTEMPEL%"
            set "LOGDATEI=%ZIELORDNER%\backup_protokoll_%ZEITSTEMPEL%.log"
            
            echo ============================================================
            echo Ordner wird gesichert:
            echo !QUELLORDNER!
            echo.
            echo Backup-Hauptordner:
            echo !BACKUP_PFAD!
            echo.
            echo Zielordner:
            echo !ZIELORDNER!
            echo.
            echo Logdatei:
            echo !LOGDATEI!
            echo ============================================================
            echo.
            
            if "%TESTMODUS%"=="JA" goto robocopy_test
            
            if not exist "!BACKUP_PFAD!" mkdir "!BACKUP_PFAD!"
            if not exist "!ZIELORDNER!" mkdir "!ZIELORDNER!"
            
            robocopy "!QUELLORDNER!" "!ZIELORDNER!" /E /XJ /R:1 /W:1 /TEE /UNILOG:"!LOGDATEI!" /XD "!BACKUP_PFAD!" !AUSGESCHLOSSENE_ORDNER! /XF !AUSGESCHLOSSENE_DATEIEN!
            
            echo.
            echo Backup wurde erstellt:
            echo !ZIELORDNER!
            echo.
            echo Logdatei wurde erstellt:
            echo !LOGDATEI!
            echo.
            
            shift
            goto ordner_loop
            
            :robocopy_test
            echo Testmodus aktiv.
            echo Es wird nur angezeigt, was kopiert wuerde.
            echo Im Testmodus wird kein Backup-Ordner erstellt.
            echo.
            
            robocopy "!QUELLORDNER!" "!ZIELORDNER!" /E /L /XJ /R:1 /W:1 /XD "!BACKUP_PFAD!" !AUSGESCHLOSSENE_ORDNER! /XF !AUSGESCHLOSSENE_DATEIEN!
            
            echo.
            echo Es wurde noch nichts kopiert.
            echo.
            
            shift
            goto ordner_loop
            
            :fertig
            echo.
            echo Fertig.
            echo.
            
            if "%TESTMODUS%"=="JA" (
                echo Es wurden keine Backups erstellt.
                echo Wenn alles richtig aussieht, entferne _test aus dem Dateinamen.
            ) else (
                echo Alle uebergebenen Ordner wurden verarbeitet.
            )
            
            echo.
            pause
            exit /b
            
            :keine_parameter
            echo Bitte sende einen oder mehrere Ordner an dieses Skript.
            echo.
            echo Du kannst im Explorer einen oder mehrere Ordner markieren,
            echo dann Rechtsklick - Senden an verwenden.
            echo.
            pause
            exit /b
            
            :ordner_ausschliessen
            set "AUSGESCHLOSSENE_ORDNER=!AUSGESCHLOSSENE_ORDNER! "%~1""
            exit /b
            
            :datei_ausschliessen
            set "AUSGESCHLOSSENE_DATEIEN=!AUSGESCHLOSSENE_DATEIEN! "%~1""
            exit /b

            Code der SendTo-Testvariante erklärt

            Prüfen, ob etwas übergeben wurde

            if "%~1"=="" (
                echo Bitte sende einen oder mehrere Projektordner an dieses Skript.
                echo.
                echo Du kannst im Explorer Ordner markieren,
                echo dann Rechtsklick - Senden an verwenden.
                echo.
                pause
                exit /b
            )

            Diese Prüfung stellt sicher, dass mindestens ein Ordner an das Skript übergeben wurde.

            Mehrere Projektordner verarbeiten

            :projekt_loop
            if "%~1"=="" goto fertig
            
            ...
            shift
            goto projekt_loop

            Mit dieser Schleife kann das Skript mehrere übergebene Projektordner nacheinander verarbeiten.

            shift verschiebt die Parameter weiter. Dadurch wird nach dem ersten Ordner der nächste Ordner verarbeitet.

            Prüfen, ob ein Ordner übergeben wurde

            if not exist "%~1\" (
                echo UEBERSPRUNGEN: "%~1" ist kein Ordner.
                echo.
                shift
                goto projekt_loop
            )

            Diese Variante erwartet Ordner. Wenn ein übergebenes Element kein Ordner ist, wird es übersprungen.

            Quelle aus SendTo übernehmen

            set "QUELLE=%~1"

            Bei der SendTo-Variante ist die Quelle nicht der aktuelle Ordner, sondern der übergebene Ordner aus dem Explorer.

            Variante 4: SendTo-Backup mit Logdatei

            Die Datei heißt:

            009_sendto_backup_mit_datum_mit_log.bat

            Diese Variante erstellt echte Backups für einen oder mehrere übergebene Projektordner und schreibt jeweils ein Protokoll in den passenden Backup-Ordner.

            Der komplette Code der SendTo-Logvariante

            @echo off
            REM ============================================================
            REM TOPTORIALS OFFICE - Batch Grundkurs
            REM Script: 009_sendto_backup_mit_datum_mit_log.bat
            REM Beschreibung: Sichert uebergebene Projektordner in datierte Backupordner und schreibt ein Log.
            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"
            
            rem Name des Backup-Hauptordners innerhalb des jeweiligen Projektordners
            set "BACKUP_HAUPTORDNER=Backups"
            
            rem Ausschlusslisten vorbereiten
            set "AUSGESCHLOSSENE_ORDNER="
            set "AUSGESCHLOSSENE_DATEIEN="
            
            rem Zusaetzliche Ordner ausschliessen
            rem Jeder Ordner bekommt eine eigene Zeile.
            rem Dadurch funktionieren auch Namen mit Leerzeichen.
            call :ordner_ausschliessen "Temp"
            call :ordner_ausschliessen "Cache"
            call :ordner_ausschliessen "Alte Dateien"
            
            rem Dateien oder Dateimuster ausschliessen
            rem Hier koennen komplette Dateinamen oder Muster eingetragen werden.
            call :datei_ausschliessen "desktop.ini"
            call :datei_ausschliessen "thumbs.db"
            call :datei_ausschliessen "*.tmp"
            call :datei_ausschliessen "*.log"
            call :datei_ausschliessen "*.bak"
            
            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%"
            
            if "%~1"=="" goto keine_parameter
            
            echo SendTo Backup mit Datum wird vorbereitet...
            echo.
            echo Testmodus: %TESTMODUS%
            echo Zeitstempel: %ZEITSTEMPEL%
            echo.
            echo Ausgeschlossene Ordner:
            echo !AUSGESCHLOSSENE_ORDNER!
            echo.
            echo Ausgeschlossene Dateien / Dateimuster:
            echo !AUSGESCHLOSSENE_DATEIEN!
            echo.
            
            if "%TESTMODUS%"=="JA" goto start
            
            echo ACHTUNG: Dieses Skript erstellt jetzt wirklich Backups.
            echo.
            set /p "ANTWORT=Zum Fortfahren JA eingeben: "
            
            if /i "%ANTWORT%"=="JA" goto start
            
            echo.
            echo Abgebrochen.
            echo.
            pause
            exit /b
            
            :start
            echo.
            
            :ordner_loop
            if "%~1"=="" goto fertig
            
            if exist "%~1\" goto ordner_verarbeiten
            
            echo UEBERSPRUNGEN: "%~1" ist kein Ordner.
            echo.
            shift
            goto ordner_loop
            
            :ordner_verarbeiten
            set "QUELLORDNER=%~1"
            set "BACKUP_PFAD=%QUELLORDNER%\%BACKUP_HAUPTORDNER%"
            set "ZIELORDNER=%BACKUP_PFAD%\Backup_%ZEITSTEMPEL%"
            set "LOGDATEI=%ZIELORDNER%\backup_protokoll_%ZEITSTEMPEL%.log"
            
            echo ============================================================
            echo Ordner wird gesichert:
            echo !QUELLORDNER!
            echo.
            echo Backup-Hauptordner:
            echo !BACKUP_PFAD!
            echo.
            echo Zielordner:
            echo !ZIELORDNER!
            echo.
            echo Logdatei:
            echo !LOGDATEI!
            echo ============================================================
            echo.
            
            if "%TESTMODUS%"=="JA" goto robocopy_test
            
            if not exist "!BACKUP_PFAD!" mkdir "!BACKUP_PFAD!"
            if not exist "!ZIELORDNER!" mkdir "!ZIELORDNER!"
            
            robocopy "!QUELLORDNER!" "!ZIELORDNER!" /E /XJ /R:1 /W:1 /TEE /UNILOG:"!LOGDATEI!" /XD "!BACKUP_PFAD!" !AUSGESCHLOSSENE_ORDNER! /XF !AUSGESCHLOSSENE_DATEIEN!
            
            echo.
            echo Backup wurde erstellt:
            echo !ZIELORDNER!
            echo.
            echo Logdatei wurde erstellt:
            echo !LOGDATEI!
            echo.
            
            shift
            goto ordner_loop
            
            :robocopy_test
            echo Testmodus aktiv.
            echo Es wird nur angezeigt, was kopiert wuerde.
            echo Im Testmodus wird kein Backup-Ordner erstellt.
            echo.
            
            robocopy "!QUELLORDNER!" "!ZIELORDNER!" /E /L /XJ /R:1 /W:1 /XD "!BACKUP_PFAD!" !AUSGESCHLOSSENE_ORDNER! /XF !AUSGESCHLOSSENE_DATEIEN!
            
            echo.
            echo Es wurde noch nichts kopiert.
            echo.
            
            shift
            goto ordner_loop
            
            :fertig
            echo.
            echo Fertig.
            echo.
            
            if "%TESTMODUS%"=="JA" (
                echo Es wurden keine Backups erstellt.
                echo Wenn alles richtig aussieht, entferne _test aus dem Dateinamen.
            ) else (
                echo Alle uebergebenen Ordner wurden verarbeitet.
            )
            
            echo.
            pause
            exit /b
            
            :keine_parameter
            echo Bitte sende einen oder mehrere Ordner an dieses Skript.
            echo.
            echo Du kannst im Explorer einen oder mehrere Ordner markieren,
            echo dann Rechtsklick - Senden an verwenden.
            echo.
            pause
            exit /b
            
            :ordner_ausschliessen
            set "AUSGESCHLOSSENE_ORDNER=!AUSGESCHLOSSENE_ORDNER! "%~1""
            exit /b
            
            :datei_ausschliessen
            set "AUSGESCHLOSSENE_DATEIEN=!AUSGESCHLOSSENE_DATEIEN! "%~1""
            exit /b

            Wichtige Unterschiede der SendTo-Logvariante

            Diese Variante kombiniert mehrere Funktionen:

            • Ein oder mehrere Projektordner können per SendTo übergeben werden.
            • Für jeden Projektordner wird ein eigener Backup-Ordner erstellt.
            • Der Backup-Hauptordner wird automatisch angelegt.
            • Der Backup-Hauptordner wird vom Kopieren ausgeschlossen.
            • Das Protokoll wird im jeweiligen Backup-Ordner gespeichert.

            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 einen oder mehrere Projektordner markieren und mit Rechtsklick > Senden an an das Skript übergeben.

            Wichtig: Diese SendTo-Varianten erwarten Ordner. Dateien selbst werden übersprungen.

            Was passiert im Testmodus?

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

            Das passiert über die robocopy-Option:

            /L

            /L bedeutet: Nur auflisten, nicht kopieren.

            Dadurch kann man sehr gut prüfen, welche Dateien und Ordner in das Backup aufgenommen würden, bevor wirklich kopiert wird.

            Welche Ordner und Dateien werden ausgeschlossen?

            Das Skript kann bestimmte Ordner und Dateien vom Backup ausschließen.

            Der Backup-Hauptordner selbst wird immer ausgeschlossen, damit alte Backups nicht erneut in neue Backups kopiert werden.

            Typische ausgeschlossene Ordner können sein:

            Backups
            Temp
            Cache
            Alte Dateien

            Typische ausgeschlossene Dateien oder Muster können sein:

            desktop.ini
            thumbs.db
            *.tmp
            *.log
            *.bak

            Dadurch kann das Backup übersichtlicher bleiben und unnötige temporäre Dateien werden nicht mitkopiert.

            Wichtige robocopy-Optionen

            Option Bedeutung
            /E Kopiert Unterordner inklusive leerer Unterordner.
            /L Listet nur auf, was kopiert würde. Wird im Testmodus verwendet.
            /XJ Schließt Junction Points aus und verhindert mögliche Schleifen.
            /R:1 Versucht fehlgeschlagene Kopien nur einmal erneut.
            /W:1 Wartet bei Wiederholungen nur eine Sekunde.
            /XD Schließt Ordner aus.
            /XF Schließt Dateien oder Dateimuster aus.
            /TEE Zeigt die Ausgabe im Fenster und schreibt sie gleichzeitig ins Log.
            /UNILOG Schreibt das Log als Unicode-Datei.

            Warum wird kein /MIR verwendet?

            /MIR ist eine robocopy-Option zum Spiegeln eines Ordners. Dabei können im Ziel auch Dateien gelöscht werden, wenn sie in der Quelle nicht mehr vorhanden sind.

            Für Einsteiger-Backups ist das riskant. Deshalb wird hier bewusst nicht mit /MIR gearbeitet.

            Dieses Skript erstellt einen neuen Backup-Ordner und kopiert Dateien hinein. Es löscht keine vorhandenen Dateien aus älteren Backups.

            Typische Anpassungen

            Name des Backup-Hauptordners

            Der Name des Backup-Hauptordners kann im Skript angepasst werden:

            set "BACKUP_ORDNER=Backups"

            Beispiel:

            set "BACKUP_ORDNER=Sicherungen"

            Zusätzliche Ausschlüsse

            Weitere Ordner oder Dateien können in den robocopy-Ausschlüssen ergänzt werden.

            Beispiele:

            /XD "Temp" "Cache" "Alte Dateien"
            /XF "desktop.ini" "thumbs.db" "*.tmp" "*.log" "*.bak"

            Bei Namen mit Leerzeichen sind Anführungszeichen besonders wichtig.

            Häufige Fehler

            Es wird nichts kopiert

            Wenn _test im Dateinamen steht, ist das korrekt. Dann läuft das Skript im Testmodus und verwendet /L. Es wird nur angezeigt, was kopiert würde.

            Der Backup-Ordner wird nicht mitkopiert

            Das ist absichtlich so. Der Backup-Hauptordner wird ausgeschlossen, damit alte Backups nicht erneut in neue Backups kopiert werden.

            Logdateien werden nicht mitkopiert

            Wenn *.log in der Ausschlussliste steht, werden Logdateien bewusst nicht kopiert.

            Die SendTo-Variante überspringt ein Element

            Dann wurde wahrscheinlich eine Datei statt eines Ordners übergeben. Diese Varianten erwarten Projektordner.

            Umlaute im Log sehen falsch aus

            Die Log-Varianten verwenden /UNILOG, damit das Protokoll als Unicode-Datei geschrieben wird. Dadurch sind Umlaute normalerweise besser lesbar.

            Was haben wir gelernt?

            In diesem Teil wurden mehrere wichtige Batch- und robocopy-Grundlagen gezeigt:

            robocopy kann Ordner zuverlässig kopieren.
            /E kopiert Unterordner inklusive leerer Ordner.
            /L erzeugt eine Vorschau ohne echtes Kopieren.
            /XD schließt Ordner aus.
            /XF schließt Dateien und Muster aus.
            /UNILOG schreibt ein Unicode-Protokoll.
            /TEE zeigt die Ausgabe an und schreibt sie ins Log.
            %CD% steht für den aktuellen Ordner.
            %~1 steht bei SendTo für den übergebenen Ordner.
            shift verarbeitet mehrere übergebene Ordner nacheinander.
            Zeitstempel können für eindeutige Backup-Ordner genutzt werden.

            Damit ist dieses Skript-Paket ein sehr nützliches Werkzeug, um Projektordner mit Datum und Uhrzeit zu sichern und gleichzeitig nachvollziehbare Protokolle zu erzeugen.

            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 009: Backup mit Zeitstempel und robocopy erstellen
            • Python Grundkurs Teil 008: Text in Dateinamen ersetzen
            • PowerShell 7 Grundkurs Teil 008: Text in Dateinamen ersetzen
            • Batch Grundkurs 008: Text in Dateinamen suchen und ersetzen
            • Python Grundkurs Teil 007: Zeitstempel hinzufügen und entfernen

            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