Batch Grundkurs 007: Zeitstempel im Dateinamen hinzufügen und entfernen
Worum geht es in diesem Teil?
In diesem siebten Teil des Batch-Grundkurses versehen wir Dateien automatisch mit einem Zeitstempel im Dateinamen. Zusätzlich gibt es Varianten, mit denen vorhandene Zeitstempel wieder aus Dateinamen entfernt werden können.
Ein Zeitstempel im Dateinamen ist sehr praktisch, wenn Dateien eindeutig gekennzeichnet, chronologisch sortiert oder archiviert werden sollen.
Beispiel:
rechnung.pdf
wird zu:
2026-06-27_14-35-20_rechnung.pdf

Batch Rechnung mit Zeitstempel
Das Format ist so aufgebaut, dass Dateien im Explorer sehr gut nach Datum und Uhrzeit sortierbar bleiben.
Warum ist dieses Beispiel praktisch?
Zeitstempel sind in vielen Workflows nützlich:
Scans eindeutig benennen
Exporte zeitlich kennzeichnen
Backupdateien sortierbar machen
Projektdateien versionieren
Zwischenstände sichern
Dateien für Archivierung vorbereiten
Gerade bei Dateien, die aus Scannern, Programmen, Kameras, Exporten oder Downloads stammen, kann ein Zeitstempel helfen, die Reihenfolge und den Entstehungszeitpunkt besser nachvollziehbar zu machen.
Zusätzlich ist es praktisch, Zeitstempel wieder entfernen zu können, falls man Dateien später bereinigen oder anders benennen möchte.
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 007:
Download Batch Grundkurs: 007_Zeitstempel_im_Dateinamen 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\007_Zeitstempel_im_Dateinamen
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\007_Zeitstempel_im_Dateinamen
Du musst die Testumgebung aber nicht verwenden. Die Batchdateien funktionieren auch mit eigenen Dateien und 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 benennt Dateien um. Deshalb ist der Testmodus hier besonders wichtig. Solange _test im Dateinamen steht, wird nur angezeigt, was passieren würde. Es wird noch nichts umbenannt.
Enthaltene Skripte
Zu diesem Teil gehören sieben Batchdateien:
007_zeitstempel_im_dateinamen_test.bat
007_zeitstempel_im_dateinamen_mit_log_und_clipboard_test.bat
007_zeitstempel_aus_dateinamen_entfernen_test.bat
007_sendto_zeitstempel_im_dateinamen_test.bat
007_sendto_zeitstempel_im_dateinamen.bat
007_sendto_zeitstempel_aus_dateinamen_entfernen_test.bat
007_sendto_zeitstempel_aus_dateinamen_entfernen.bat
Welche Variante brauche ich?
- Zeitstempel hinzufügen: Wenn Dateien im aktuellen Ordner einen Zeitstempel bekommen sollen.
- Zeitstempel hinzufügen mit Log und Zwischenablage: Wenn zusätzlich ein Protokoll erstellt und kopiert werden soll.
- Zeitstempel entfernen: Wenn vorhandene Zeitstempel am Anfang des Dateinamens wieder entfernt werden sollen.
- SendTo Zeitstempel hinzufügen: Wenn du gezielt Dateien oder Ordner per Rechtsklick übergeben möchtest.
- SendTo Zeitstempel entfernen: Wenn du gezielt Dateien oder Ordner per Rechtsklick bereinigen möchtest.
Verwendetes Zeitstempel-Format
Das Skript verwendet dieses Format:
JJJJ-MM-TT_HH-MM-SS_
Beispiel:
2026-06-27_14-35-20_rechnung.pdf
Dieses Format ist gut sortierbar, weil zuerst das Jahr, dann der Monat, dann der Tag und danach die Uhrzeit kommt.
Variante 1: Zeitstempel im aktuellen Ordner hinzufügen
Die Datei heißt:
007_zeitstempel_im_dateinamen_test.bat
Diese Variante wird in den Ordner kopiert, dessen Dateien einen Zeitstempel bekommen sollen.
Der komplette Code der einfachen Hinzufügen-Variante
@echo off
REM ============================================================
REM TOPTORIALS OFFICE - Batch Grundkurs
REM Script: 007_zeitstempel_im_dateinamen_test.bat
REM Beschreibung: Fuegt Dateinamen im aktuellen Ordner einen Zeitstempel hinzu.
REM Autor: Chris
REM YouTube: https://www.youtube.com/@TOPTORIALS-OFFICE
REM Webseite: https://www.toptorials.com
REM Version: 1.0
REM Stand: 2026-06-27
REM
REM Hinweis:
REM Solange _test im Dateinamen steht, wird nur eine Vorschau angezeigt.
REM Fuer die echte Ausfuehrung _test aus dem Dateinamen entfernen.
REM ============================================================
echo.
set "TESTMODUS=NEIN"
set "AUSGESCHLOSSEN= .bat .cmd .ps1 .py .log "
set /a ANZAHL=0
set /a UEBERSPRUNGEN=0
echo %~n0 | find /i "_test" >nul
if not errorlevel 1 set "TESTMODUS=JA"
set "DATUM=%date:~-4%-%date:~3,2%-%date:~0,2%"
set "ZEIT=%time:~0,2%-%time:~3,2%-%time:~6,2%"
set "ZEIT=%ZEIT: =0%"
set "ZEITSTEMPEL=%DATUM%_%ZEIT%"
echo Dateien werden mit Zeitstempel umbenannt...
echo.
echo Zeitstempel: %ZEITSTEMPEL%
echo Testmodus: %TESTMODUS%
echo Ausgeschlossene Dateiendungen:%AUSGESCHLOSSEN%
echo.
if "%TESTMODUS%"=="JA" goto start
echo ACHTUNG: Dieses Skript wird Dateien wirklich umbenennen.
echo.
set /p "ANTWORT=Zum Fortfahren JA eingeben: "
if /i "%ANTWORT%"=="JA" goto start
echo.
echo Abgebrochen.
echo.
pause
exit /b
:start
echo.
for %%f in (*.*) do (
if not "%%~nxf"=="%~nx0" (
echo %AUSGESCHLOSSEN% | find /i " %%~xf " >nul
if not errorlevel 1 (
echo UEBERSPRUNGEN: "%%~nxf" - Dateiendung ist ausgeschlossen
set /a UEBERSPRUNGEN+=1
) else (
echo %%~nxf | findstr /r "^[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]_[0-9][0-9]-[0-9][0-9]-[0-9][0-9]_" >nul
if not errorlevel 1 (
echo UEBERSPRUNGEN: "%%~nxf" - Zeitstempel ist bereits vorhanden
set /a UEBERSPRUNGEN+=1
) else (
if exist "%ZEITSTEMPEL%_%%~nxf" (
echo UEBERSPRUNGEN: "%%~nxf" - Zieldatei existiert bereits
set /a UEBERSPRUNGEN+=1
) else (
if "%TESTMODUS%"=="JA" (
echo WUERDE UMBENENNEN: "%%~nxf" zu "%ZEITSTEMPEL%_%%~nxf"
set /a ANZAHL+=1
) else (
ren "%%~nxf" "%ZEITSTEMPEL%_%%~nxf"
echo UMBENANNT: "%%~nxf" zu "%ZEITSTEMPEL%_%%~nxf"
set /a ANZAHL+=1
)
)
)
)
)
)
echo.
echo Fertig.
echo.
if "%TESTMODUS%"=="JA" (
echo Anzahl Dateien, die umbenannt wuerden: %ANZAHL%
echo Anzahl Dateien, die uebersprungen wuerden: %UEBERSPRUNGEN%
echo.
echo Es wurde noch nichts umbenannt.
echo Wenn alles richtig aussieht, entferne _test aus dem Dateinamen.
) else (
echo Gesamt umbenannt: %ANZAHL% Dateien
echo Uebersprungen: %UEBERSPRUNGEN% Dateien
)
echo.
pause
Code der einfachen Hinzufügen-Variante 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 angezeigt, was passieren würde.
Sicherheitsabfrage bei echter Ausführung
if "%TESTMODUS%"=="JA" goto start
echo ACHTUNG: Dieses Skript wird Dateien wirklich umbenennen.
echo.
set /p "ANTWORT=Zum Fortfahren JA eingeben: "
if /i "%ANTWORT%"=="JA" goto start
Wenn das Skript nicht im Testmodus läuft, muss zuerst JA eingegeben werden. Erst danach werden Dateien wirklich umbenannt.
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 bilden aus Datum und Uhrzeit den Zeitstempel.
%date% liefert das aktuelle Datum. Mit den Zeichenbereichen wie %date:~-4% werden einzelne Bestandteile herausgeschnitten.
%time% liefert die aktuelle Uhrzeit. Die Zeile %ZEIT: =0% ersetzt ein mögliches Leerzeichen durch eine Null, damit auch einstellige Stunden sauber aussehen.
Dateien durchlaufen
for %%f in (*.*) do (
...
)
Diese Schleife verarbeitet alle Dateien im aktuellen Ordner.
Die eigene Batchdatei wird dabei ausgeschlossen, damit sich das Skript nicht selbst umbenennt.
Bereits vorhandene Zeitstempel überspringen
Das Skript prüft, ob eine Datei bereits mit einem Zeitstempel beginnt. Wenn ja, wird sie übersprungen.
Dadurch wird verhindert, dass ein Dateiname bei mehrfacher Ausführung immer länger wird.
Dateien umbenennen
ren "%%~nxf" "%ZEITSTEMPEL%_%%~nxf"
Mit ren wird die Datei umbenannt. Der neue Name besteht aus dem Zeitstempel, einem Unterstrich und dem bisherigen Dateinamen.
Variante 2: Zeitstempel hinzufügen mit Logdatei und Zwischenablage
Die Datei heißt:
007_zeitstempel_im_dateinamen_mit_log_und_clipboard_test.bat
Diese Variante arbeitet wie die einfache Hinzufügen-Variante, erstellt aber zusätzlich eine Logdatei und kopiert deren Inhalt in die Zwischenablage.
Der komplette Code der Log-Variante
@echo off
REM ============================================================
REM TOPTORIALS OFFICE - Batch Grundkurs
REM Script: 007_zeitstempel_im_dateinamen_mit_log_und_clipboard_test.bat
REM Beschreibung: Fuegt Dateinamen einen Zeitstempel hinzu, schreibt ein Log und kopiert es in die Zwischenablage.
REM Autor: Chris
REM YouTube: https://www.youtube.com/@TOPTORIALS-OFFICE
REM Webseite: https://www.toptorials.com
REM Version: 1.0
REM Stand: 2026-06-27
REM
REM Hinweis:
REM Solange _test im Dateinamen steht, wird nur eine Vorschau angezeigt.
REM Fuer die echte Ausfuehrung _test aus dem Dateinamen entfernen.
REM ============================================================
echo.
set "TESTMODUS=NEIN"
set "AUSGESCHLOSSEN= .bat .cmd .ps1 .py .log "
set /a ANZAHL=0
set /a UEBERSPRUNGEN=0
echo %~n0 | find /i "_test" >nul
if not errorlevel 1 set "TESTMODUS=JA"
set "DATUM=%date:~-4%-%date:~3,2%-%date:~0,2%"
set "ZEIT=%time:~0,2%-%time:~3,2%-%time:~6,2%"
set "ZEIT=%ZEIT: =0%"
set "ZEITSTEMPEL=%DATUM%_%ZEIT%"
set "LOGDATEI=umbenennprotokoll_%ZEITSTEMPEL%.log"
echo Dateien werden mit Zeitstempel umbenannt...>>"%LOGDATEI%"
echo Zeitstempel: %ZEITSTEMPEL%>>"%LOGDATEI%"
echo Testmodus: %TESTMODUS%>>"%LOGDATEI%"
echo Ausgeschlossene Dateiendungen:%AUSGESCHLOSSEN%>>"%LOGDATEI%"
echo Logdatei: %LOGDATEI%>>"%LOGDATEI%"
echo.>>"%LOGDATEI%"
echo Dateien werden mit Zeitstempel umbenannt...
echo.
echo Zeitstempel: %ZEITSTEMPEL%
echo Testmodus: %TESTMODUS%
echo Ausgeschlossene Dateiendungen:%AUSGESCHLOSSEN%
echo Logdatei: %LOGDATEI%
echo.
if "%TESTMODUS%"=="JA" goto start
echo ACHTUNG: Dieses Skript wird Dateien wirklich umbenennen.
echo.
set /p "ANTWORT=Zum Fortfahren JA eingeben: "
if /i "%ANTWORT%"=="JA" goto start
echo.
echo Abgebrochen.
echo.
echo Abgebrochen.>>"%LOGDATEI%"
type "%LOGDATEI%" | clip
pause
exit /b
:start
echo.
for %%f in (*.*) do (
if not "%%~nxf"=="%~nx0" (
if not "%%~nxf"=="%LOGDATEI%" (
echo %AUSGESCHLOSSEN% | find /i " %%~xf " >nul
if not errorlevel 1 (
echo UEBERSPRUNGEN: "%%~nxf" - Dateiendung ist ausgeschlossen
echo UEBERSPRUNGEN: "%%~nxf" - Dateiendung ist ausgeschlossen>>"%LOGDATEI%"
set /a UEBERSPRUNGEN+=1
) else (
echo %%~nxf | findstr /r "^[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]_[0-9][0-9]-[0-9][0-9]-[0-9][0-9]_" >nul
if not errorlevel 1 (
echo UEBERSPRUNGEN: "%%~nxf" - Zeitstempel ist bereits vorhanden
echo UEBERSPRUNGEN: "%%~nxf" - Zeitstempel ist bereits vorhanden>>"%LOGDATEI%"
set /a UEBERSPRUNGEN+=1
) else (
if exist "%ZEITSTEMPEL%_%%~nxf" (
echo UEBERSPRUNGEN: "%%~nxf" - Zieldatei existiert bereits
echo UEBERSPRUNGEN: "%%~nxf" - Zieldatei existiert bereits>>"%LOGDATEI%"
set /a UEBERSPRUNGEN+=1
) else (
if "%TESTMODUS%"=="JA" (
echo WUERDE UMBENENNEN: "%%~nxf" zu "%ZEITSTEMPEL%_%%~nxf"
echo WUERDE UMBENENNEN: "%%~nxf" zu "%ZEITSTEMPEL%_%%~nxf">>"%LOGDATEI%"
set /a ANZAHL+=1
) else (
ren "%%~nxf" "%ZEITSTEMPEL%_%%~nxf"
echo UMBENANNT: "%%~nxf" zu "%ZEITSTEMPEL%_%%~nxf"
echo UMBENANNT: "%%~nxf" zu "%ZEITSTEMPEL%_%%~nxf">>"%LOGDATEI%"
set /a ANZAHL+=1
)
)
)
)
)
)
)
echo.>>"%LOGDATEI%"
echo Fertig.>>"%LOGDATEI%"
if "%TESTMODUS%"=="JA" (
echo Anzahl Dateien, die umbenannt wuerden: %ANZAHL%>>"%LOGDATEI%"
echo Anzahl Dateien, die uebersprungen wuerden: %UEBERSPRUNGEN%>>"%LOGDATEI%"
echo Es wurde noch nichts umbenannt.>>"%LOGDATEI%"
echo Wenn alles richtig aussieht, entferne _test aus dem Dateinamen.>>"%LOGDATEI%"
) else (
echo Gesamt umbenannt: %ANZAHL% Dateien>>"%LOGDATEI%"
echo Uebersprungen: %UEBERSPRUNGEN% Dateien>>"%LOGDATEI%"
)
type "%LOGDATEI%" | clip
echo.
echo Fertig.
echo Das Protokoll wurde erstellt:
echo %LOGDATEI%
echo.
echo Der Inhalt wurde zusaetzlich in die Zwischenablage kopiert.
echo.
if "%TESTMODUS%"=="JA" (
echo Anzahl Dateien, die umbenannt wuerden: %ANZAHL%
echo Anzahl Dateien, die uebersprungen wuerden: %UEBERSPRUNGEN%
echo.
echo Es wurde noch nichts umbenannt.
echo Wenn alles richtig aussieht, entferne _test aus dem Dateinamen.
) else (
echo Gesamt umbenannt: %ANZAHL% Dateien
echo Uebersprungen: %UEBERSPRUNGEN% Dateien
)
echo.
pause
Wichtige Unterschiede der Log-Variante
Logdatei mit Zeitstempel
Die Logdatei erhält ebenfalls einen Zeitstempel im Namen.
zeitstempel_protokoll_2026-06-27_14-35-20.log
Dadurch kann man später nachvollziehen, welche Dateien verarbeitet wurden.
In die Logdatei schreiben
echo UMBENANNT: "%%~nxf" zu "%ZEITSTEMPEL%_%%~nxf">>"%LOGDATEI%"
Mit >> wird eine Zeile an die Logdatei angehängt.
Logdatei in die Zwischenablage kopieren
type "%LOGDATEI%" | clip
Am Ende wird die Logdatei mit type gelesen und mit clip in die Windows-Zwischenablage kopiert.
Variante 3: Zeitstempel aus Dateinamen entfernen
Die Datei heißt:
007_zeitstempel_aus_dateinamen_entfernen_test.bat
Diese Variante entfernt Zeitstempel am Anfang von Dateinamen.
Beispiel:
2026-06-27_14-35-20_rechnung.pdf
wird wieder zu:
rechnung.pdf
Wenn nach dem Entfernen kein sinnvoller Name mehr übrig bleibt, verwendet das Skript automatisch Unbenannt und erzeugt bei Bedarf eine freie Nummerierung.
Der komplette Code der Entfernen-Variante
@echo off
REM ============================================================
REM TOPTORIALS OFFICE - Batch Grundkurs
REM Script: 007_zeitstempel_aus_dateinamen_entfernen_test.bat
REM Beschreibung: Entfernt Zeitstempel aus Dateinamen im aktuellen Ordner.
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 "AUSGESCHLOSSEN= .bat .cmd .ps1 .py .log "
set /a ANZAHL=0
set /a UEBERSPRUNGEN=0
echo %~n0 | find /i "_test" >nul
if not errorlevel 1 set "TESTMODUS=JA"
echo Zeitstempel werden aus Dateinamen entfernt...
echo.
echo Testmodus: %TESTMODUS%
echo Ausgeschlossene Dateiendungen:%AUSGESCHLOSSEN%
echo.
if "%TESTMODUS%"=="JA" goto start
echo ACHTUNG: Dieses Skript wird Dateien wirklich umbenennen.
echo.
set /p "ANTWORT=Zum Fortfahren JA eingeben: "
if /i "%ANTWORT%"=="JA" goto start
echo.
echo Abgebrochen.
echo.
pause
exit /b
:start
echo.
for %%f in (*.*) do (
if not "%%~nxf"=="%~nx0" (
echo %AUSGESCHLOSSEN% | find /i " %%~xf " >nul
if not errorlevel 1 (
echo UEBERSPRUNGEN: "%%~nxf" - Dateiendung ist ausgeschlossen
set /a UEBERSPRUNGEN+=1
) else (
echo %%~nxf | findstr /r "^[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]_[0-9][0-9]-[0-9][0-9]-[0-9][0-9]" >nul
if errorlevel 1 (
echo UEBERSPRUNGEN: "%%~nxf" - kein Zeitstempel am Anfang gefunden
set /a UEBERSPRUNGEN+=1
) else (
set "ALTERNAME=%%~nf"
set "ERWEITERUNG=%%~xf"
rem Zeitstempel im Format JJJJ-MM-TT_HH-MM-SS entfernen
set "NEUERNAME=!ALTERNAME:~19!"
rem Falls danach ein Unterstrich folgt, diesen ebenfalls entfernen
if "!NEUERNAME:~0,1!"=="_" set "NEUERNAME=!NEUERNAME:~1!"
rem Falls nach dem Entfernen nichts uebrig bleibt
if "!NEUERNAME!"=="" set "NEUERNAME=Unbenannt"
call :freien_namen_suchen "!NEUERNAME!" "!ERWEITERUNG!"
if "%TESTMODUS%"=="JA" (
echo WUERDE UMBENENNEN: "%%~nxf" zu "!ZIELNAME!"
set /a ANZAHL+=1
) else (
ren "%%~nxf" "!ZIELNAME!"
echo UMBENANNT: "%%~nxf" zu "!ZIELNAME!"
set /a ANZAHL+=1
)
)
)
)
)
echo.
echo Fertig.
echo.
if "%TESTMODUS%"=="JA" (
echo Anzahl Dateien, die umbenannt wuerden: %ANZAHL%
echo Anzahl Dateien, die uebersprungen wuerden: %UEBERSPRUNGEN%
echo.
echo Es wurde noch nichts umbenannt.
echo Wenn alles richtig aussieht, entferne _test aus dem Dateinamen.
) else (
echo Gesamt umbenannt: %ANZAHL% Dateien
echo Uebersprungen: %UEBERSPRUNGEN% Dateien
)
echo.
pause
exit /b
:freien_namen_suchen
set "BASIS=%~1"
set "ENDUNG=%~2"
set "ZIELNAME=%BASIS%%ENDUNG%"
if not exist "%ZIELNAME%" exit /b
set /a NR=1
:naechster_name
set "NR_TEXT=00%NR%"
set "NR_TEXT=%NR_TEXT:~-3%"
set "ZIELNAME=%BASIS%_%NR_TEXT%%ENDUNG%"
if exist "%ZIELNAME%" (
set /a NR+=1
goto naechster_name
)
exit /b
Code der Entfernen-Variante erklärt
Erkennen eines Zeitstempels
Die Entfernen-Variante prüft, ob ein Dateiname am Anfang dem erwarteten Zeitstempel-Muster entspricht.
Nur solche Dateien werden verarbeitet. Dateien ohne passenden Zeitstempel werden übersprungen.
Neuen Namen bilden
Wenn ein Zeitstempel erkannt wird, wird dieser Anfangsteil aus dem Dateinamen entfernt.
Aus:
2026-06-27_14-35-20_rechnung.pdf
wird:
rechnung.pdf
Unbenannt-Fall
Wenn eine Datei nur aus einem Zeitstempel besteht, würde nach dem Entfernen kein sinnvoller Dateiname mehr übrig bleiben.
In diesem Fall verwendet das Skript automatisch:
Unbenannt
Falls dieser Name bereits existiert, wird eine Nummer ergänzt, zum Beispiel:
Unbenannt_001.txt
Unbenannt_002.txt
Namenskonflikte vermeiden
Wenn der Zielname bereits existiert, wird nicht überschrieben. Stattdessen sucht das Skript nach einem freien Namen mit Nummerierung.
Variante 4: SendTo – Zeitstempel hinzufügen
Diese Variante ist für das Windows-Menü Senden an gedacht.
Es gibt eine Testversion und eine Scharf-Version:
007_sendto_zeitstempel_im_dateinamen_test.bat
007_sendto_zeitstempel_im_dateinamen.bat
Man kann Dateien oder Ordner im Explorer markieren und an das Skript senden.
- Bei übergebenen Dateien werden diese Dateien direkt verarbeitet.
- Bei übergebenen Ordnern werden die Dateien direkt in diesen Ordnern verarbeitet.
- Unterordner werden nicht rekursiv durchsucht.
Der folgende Code zeigt die Testversion:
Der komplette Code der SendTo-Hinzufügen-Testversion
@echo off
REM ============================================================
REM TOPTORIALS OFFICE - Batch Grundkurs
REM Script: 007_sendto_zeitstempel_im_dateinamen_test.bat
REM Beschreibung: Fuegt den Dateinamen uebergebener Dateien oder Ordnerinhalte einen Zeitstempel hinzu.
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 "AUSGESCHLOSSEN= .bat .cmd .ps1 .py .log "
set /a ANZAHL=0
set /a UEBERSPRUNGEN=0
set /a ORDNER_ANZAHL=0
set /a DATEI_ANZAHL=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%"
if "%~1"=="" goto keine_parameter
echo Dateien werden mit Zeitstempel umbenannt...
echo.
echo Zeitstempel: %ZEITSTEMPEL%
echo Testmodus: %TESTMODUS%
echo Ausgeschlossene Dateiendungen:%AUSGESCHLOSSEN%
echo.
if "%TESTMODUS%"=="JA" goto start
echo ACHTUNG: Dieses Skript wird Dateien wirklich umbenennen.
echo.
set /p "ANTWORT=Zum Fortfahren JA eingeben: "
if /i "%ANTWORT%"=="JA" goto start
echo.
echo Abgebrochen.
echo.
pause
exit /b
:start
echo.
:element_loop
if "%~1"=="" goto fertig
if exist "%~1\" goto element_ist_ordner
if exist "%~1" goto element_ist_datei
echo UEBERSPRUNGEN: "%~1" - Datei oder Ordner wurde nicht gefunden
set /a UEBERSPRUNGEN+=1
shift
goto element_loop
:element_ist_ordner
set /a ORDNER_ANZAHL+=1
set "AKTUELLER_ORDNER=%~1"
echo Ordner wird verarbeitet:
echo !AKTUELLER_ORDNER!
echo.
for %%f in ("!AKTUELLER_ORDNER!\*.*") do call :datei_verarbeiten "%%~f"
echo.
shift
goto element_loop
:element_ist_datei
set /a DATEI_ANZAHL+=1
call :datei_verarbeiten "%~1"
echo.
shift
goto element_loop
:datei_verarbeiten
set "DATEI=%~1"
set "DATEINAME=%~nx1"
set "DATEIORDNER=%~dp1"
set "DATEIENDUNG=%~x1"
echo(!AUSGESCHLOSSEN! | find /i " !DATEIENDUNG! " >nul
if not errorlevel 1 goto dateiendung_ausgeschlossen
echo(!DATEINAME! | findstr /r "^[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]_[0-9][0-9]-[0-9][0-9]-[0-9][0-9]_" >nul
if not errorlevel 1 goto zeitstempel_vorhanden
if exist "!DATEIORDNER!!ZEITSTEMPEL!_!DATEINAME!" goto zieldatei_existiert
if "%TESTMODUS%"=="JA" goto datei_testmodus
ren "!DATEI!" "!ZEITSTEMPEL!_!DATEINAME!"
echo UMBENANNT: "!DATEINAME!" zu "!ZEITSTEMPEL!_!DATEINAME!"
set /a ANZAHL+=1
exit /b
:datei_testmodus
echo WUERDE UMBENENNEN: "!DATEINAME!" zu "!ZEITSTEMPEL!_!DATEINAME!"
set /a ANZAHL+=1
exit /b
:dateiendung_ausgeschlossen
echo UEBERSPRUNGEN: "!DATEINAME!" - Dateiendung ist ausgeschlossen
set /a UEBERSPRUNGEN+=1
exit /b
:zeitstempel_vorhanden
echo UEBERSPRUNGEN: "!DATEINAME!" - Zeitstempel ist bereits vorhanden
set /a UEBERSPRUNGEN+=1
exit /b
:zieldatei_existiert
echo UEBERSPRUNGEN: "!DATEINAME!" - Zieldatei existiert bereits
set /a UEBERSPRUNGEN+=1
exit /b
:fertig
echo.
echo Fertig.
echo.
echo Uebergebene Einzeldateien: %DATEI_ANZAHL%
echo Verarbeitete Ordner: %ORDNER_ANZAHL%
if "%TESTMODUS%"=="JA" (
echo Anzahl Dateien, die umbenannt wuerden: %ANZAHL%
echo Anzahl Elemente, die uebersprungen wuerden: %UEBERSPRUNGEN%
echo.
echo Es wurde noch nichts umbenannt.
echo Wenn alles richtig aussieht, entferne _test aus dem Dateinamen.
) else (
echo Gesamt umbenannt: %ANZAHL% Dateien
echo Uebersprungen: %UEBERSPRUNGEN% Elemente
)
echo.
pause
exit /b
:keine_parameter
echo Bitte sende eine oder mehrere Dateien oder Ordner an dieses Skript.
echo.
echo Du kannst im Explorer Dateien oder Ordner markieren,
echo dann Rechtsklick - Senden an verwenden.
echo.
pause
exit /b
Wichtige Punkte der SendTo-Hinzufügen-Variante
Mehrere Elemente verarbeiten
Die SendTo-Variante kann mehrere übergebene Dateien oder Ordner nacheinander verarbeiten.
Dadurch kann man im Explorer gezielt auswählen, welche Dateien oder Ordner betroffen sein sollen.
Dateien und Ordner unterscheiden
Das Skript prüft, ob ein übergebenes Element eine Datei oder ein Ordner ist.
Dateien werden direkt umbenannt. Bei Ordnern werden die Dateien direkt im jeweiligen Ordner verarbeitet.
Keine rekursive Verarbeitung
Unterordner werden bei dieser Variante nicht rekursiv durchsucht.
Variante 5: SendTo – Zeitstempel entfernen
Diese Variante ist ebenfalls für das Windows-Menü Senden an gedacht.
Es gibt eine Testversion und eine Scharf-Version:
007_sendto_zeitstempel_aus_dateinamen_entfernen_test.bat
007_sendto_zeitstempel_aus_dateinamen_entfernen.bat
Damit können Zeitstempel gezielt aus markierten Dateien oder aus Dateien direkt in markierten Ordnern entfernt werden.
Der folgende Code zeigt die Testversion:
Der komplette Code der SendTo-Entfernen-Testversion
@echo off
REM ============================================================
REM TOPTORIALS OFFICE - Batch Grundkurs
REM Script: 007_sendto_zeitstempel_aus_dateinamen_entfernen_test.bat
REM Beschreibung: Entfernt Zeitstempel aus den Dateinamen uebergebener Dateien oder Ordnerinhalte.
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 "AUSGESCHLOSSEN= .bat .cmd .ps1 .py .log "
set /a ANZAHL=0
set /a UEBERSPRUNGEN=0
set /a ORDNER_ANZAHL=0
set /a DATEI_ANZAHL=0
echo %~n0 | find /i "_test" >nul
if not errorlevel 1 set "TESTMODUS=JA"
if "%~1"=="" goto keine_parameter
echo Zeitstempel werden aus Dateinamen entfernt...
echo.
echo Testmodus: %TESTMODUS%
echo Ausgeschlossene Dateiendungen:%AUSGESCHLOSSEN%
echo.
if "%TESTMODUS%"=="JA" goto start
echo ACHTUNG: Dieses Skript wird Dateien wirklich umbenennen.
echo.
set /p "ANTWORT=Zum Fortfahren JA eingeben: "
if /i "%ANTWORT%"=="JA" goto start
echo.
echo Abgebrochen.
echo.
pause
exit /b
:start
echo.
:element_loop
if "%~1"=="" goto fertig
if exist "%~1\" goto element_ist_ordner
if exist "%~1" goto element_ist_datei
echo UEBERSPRUNGEN: "%~1" - Datei oder Ordner wurde nicht gefunden
set /a UEBERSPRUNGEN+=1
shift
goto element_loop
:element_ist_ordner
set /a ORDNER_ANZAHL+=1
set "AKTUELLER_ORDNER=%~1"
echo Ordner wird verarbeitet:
echo !AKTUELLER_ORDNER!
echo.
for %%f in ("!AKTUELLER_ORDNER!\*.*") do if exist "%%~f" call :datei_verarbeiten "%%~f"
echo.
shift
goto element_loop
:element_ist_datei
set /a DATEI_ANZAHL+=1
call :datei_verarbeiten "%~1"
echo.
shift
goto element_loop
:datei_verarbeiten
set "DATEI=%~1"
set "DATEINAME=%~nx1"
set "DATEIORDNER=%~dp1"
set "ALTERNAME=%~n1"
set "ERWEITERUNG=%~x1"
echo(!AUSGESCHLOSSEN! | find /i " !ERWEITERUNG! " >nul
if not errorlevel 1 goto dateiendung_ausgeschlossen
echo(!DATEINAME! | findstr /r "^[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]_[0-9][0-9]-[0-9][0-9]-[0-9][0-9]" >nul
if errorlevel 1 goto kein_zeitstempel
rem Zeitstempel im Format JJJJ-MM-TT_HH-MM-SS entfernen
set "NEUERNAME=!ALTERNAME:~19!"
rem Falls danach ein Unterstrich folgt, diesen ebenfalls entfernen
if "!NEUERNAME:~0,1!"=="_" set "NEUERNAME=!NEUERNAME:~1!"
rem Falls nach dem Entfernen nichts uebrig bleibt
if "!NEUERNAME!"=="" set "NEUERNAME=Unbenannt"
set "BASIS=!NEUERNAME!"
set "ENDUNG=!ERWEITERUNG!"
set "ZIELNAME=!BASIS!!ENDUNG!"
if not exist "!DATEIORDNER!!ZIELNAME!" goto zielname_gefunden
set /a NR=1
:naechster_name
set "NR_TEXT=00!NR!"
set "NR_TEXT=!NR_TEXT:~-3!"
set "ZIELNAME=!BASIS!_!NR_TEXT!!ENDUNG!"
if not exist "!DATEIORDNER!!ZIELNAME!" goto zielname_gefunden
set /a NR+=1
goto naechster_name
:zielname_gefunden
if "%TESTMODUS%"=="JA" goto datei_testmodus
ren "!DATEI!" "!ZIELNAME!"
echo UMBENANNT: "!DATEINAME!" zu "!ZIELNAME!"
set /a ANZAHL+=1
exit /b
:datei_testmodus
echo WUERDE UMBENENNEN: "!DATEINAME!" zu "!ZIELNAME!"
set /a ANZAHL+=1
exit /b
:dateiendung_ausgeschlossen
echo UEBERSPRUNGEN: "!DATEINAME!" - Dateiendung ist ausgeschlossen
set /a UEBERSPRUNGEN+=1
exit /b
:kein_zeitstempel
echo UEBERSPRUNGEN: "!DATEINAME!" - kein Zeitstempel am Anfang gefunden
set /a UEBERSPRUNGEN+=1
exit /b
:fertig
echo.
echo Fertig.
echo.
echo Uebergebene Einzeldateien: %DATEI_ANZAHL%
echo Verarbeitete Ordner: %ORDNER_ANZAHL%
if "%TESTMODUS%"=="JA" (
echo Anzahl Dateien, die umbenannt wuerden: %ANZAHL%
echo Anzahl Elemente, die uebersprungen wuerden: %UEBERSPRUNGEN%
echo.
echo Es wurde noch nichts umbenannt.
echo Wenn alles richtig aussieht, entferne _test aus dem Dateinamen.
) else (
echo Gesamt umbenannt: %ANZAHL% Dateien
echo Uebersprungen: %UEBERSPRUNGEN% Elemente
)
echo.
pause
exit /b
:keine_parameter
echo Bitte sende eine oder mehrere Dateien oder Ordner an dieses Skript.
echo.
echo Du kannst im Explorer Dateien oder Ordner markieren,
echo dann Rechtsklick - Senden an verwenden.
echo.
pause
exit /b
Wichtige Punkte der SendTo-Entfernen-Variante
- Die Variante verarbeitet Dateien direkt oder Dateien in übergebenen Ordnern.
- Es werden nur Dateinamen verarbeitet, die mit einem passenden Zeitstempel beginnen.
- Wenn nach dem Entfernen kein Name übrig bleibt, wird
Unbenanntverwendet. - Bei Namenskonflikten wird eine freie Nummerierung erzeugt.
- Unterordner werden nicht rekursiv durchsucht.
Wie werden die SendTo-Varianten eingerichtet?
Die SendTo-Batchdateien oder Verknüpfungen davon können in den Windows-Ordner Senden an gelegt werden.
Den SendTo-Ordner öffnet man mit:
shell:sendto
Danach kann man im Explorer Dateien oder Ordner markieren und mit Rechtsklick > Senden an an das gewünschte Skript übergeben.
Was passiert im Testmodus?
Solange _test im Dateinamen steht, wird nur angezeigt, was passieren würde.
Beispiel:
007_zeitstempel_im_dateinamen_test.bat
Im Testmodus erscheinen Meldungen wie:
WUERDE UMBENENNEN: "rechnung.pdf" zu "2026-06-27_14-35-20_rechnung.pdf"
Es wird noch nichts umbenannt.
Wenn alles korrekt aussieht, kann _test aus dem Dateinamen entfernt werden. Danach fragt das Skript vor der echten Ausführung zusätzlich nach JA, sofern die jeweilige Variante diese Sicherheitsabfrage enthält.
Was passiert bei Namenskonflikten?
Beim Hinzufügen von Zeitstempeln wird geprüft, ob der Zielname bereits existiert. Wenn der Zielname bereits vorhanden ist, wird die Datei übersprungen.
Beim Entfernen von Zeitstempeln wird ebenfalls verhindert, dass vorhandene Dateien überschrieben werden. Wenn der gewünschte Zielname schon existiert, wird eine freie Nummerierung erzeugt.
Beispiel:
Unbenannt.txt
Unbenannt_001.txt
Unbenannt_002.txt
Ausschlusslisten
In einigen Varianten können bestimmte Dateiendungen ausgeschlossen werden. Das ist praktisch, wenn zum Beispiel Batchdateien, Logdateien oder andere technische Dateien nicht verändert werden sollen.
Typische ausgeschlossene Endungen können zum Beispiel sein:
.bat
.cmd
.ps1
.py
.log
Die Ausschlussliste kann direkt im jeweiligen Skript angepasst werden.
Typische Anpassungen
Das wichtigste Element ist das Zeitstempel-Format. In den Skripten wird der Zeitstempel aus Datum und Uhrzeit zusammengesetzt.
Standardformat:
JJJJ-MM-TT_HH-MM-SS_
Für eine gute Sortierbarkeit sollte dieses Format möglichst beibehalten werden.
Außerdem können Ausschlusslisten angepasst werden, wenn bestimmte Dateitypen nicht verarbeitet werden sollen.
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:
007_zeitstempel_im_dateinamen_test.bat
und nicht:
007_zeitstempel_im_dateinamen_test.bat.txt
Es wird nichts umbenannt
Wenn _test noch im Dateinamen steht, ist das korrekt. Dann läuft das Skript im Testmodus und zeigt nur eine Vorschau an.
Für die echte Ausführung muss _test aus dem Dateinamen entfernt werden.
Dateien werden übersprungen
Das kann mehrere Gründe haben:
- Die Datei hat bereits einen Zeitstempel.
- Die Datei beginnt nicht mit einem passenden Zeitstempel, wenn Zeitstempel entfernt werden sollen.
- Die Dateiendung ist ausgeschlossen.
- Der Zielname existiert bereits.
Der Dateiname wird sehr lang
Wenn Zeitstempel mehrfach hinzugefügt würden, könnten Dateinamen sehr lang werden. Deshalb prüfen die Skripte, ob bereits ein Zeitstempel vorhanden ist, und überspringen solche Dateien.
Unterordner werden nicht verarbeitet
Die SendTo-Varianten bearbeiten Dateien direkt in den übergebenen Ordnern, aber keine tieferliegenden Unterordner. Das ist absichtlich so, damit die Verarbeitung kontrollierbar bleibt.
Was haben wir gelernt?
In diesem Teil wurden mehrere wichtige Batch-Grundlagen gezeigt:
%date% und %time% liefern Datum und Uhrzeit.
Aus Datum und Uhrzeit kann ein Zeitstempel gebildet werden.
ren benennt Dateien um.
find /i kann prüfen, ob ein Muster bereits im Dateinamen vorkommt.
if exist verhindert Überschreiben.
for verarbeitet Dateien in einem Ordner.
SendTo-Skripte können Dateien und Ordner gezielt entgegennehmen.
Ausschlusslisten können bestimmte Dateitypen ausnehmen.
Beim Entfernen von Namensteilen muss ein leerer Dateiname verhindert werden.
Nummerierung kann Namenskonflikte auflösen.
Damit ist dieses Skript-Paket besonders nützlich für Scans, Exporte, Projektdateien, Backups und andere Dateien, die zeitlich eindeutig gekennzeichnet oder später wieder bereinigt werden sollen.
Video zu diesem Tutorial:
Das könnte Dich auch interessieren
Keine Einträge gefunden

