Batch Grundkurs 005: Dateien und Ordner mit Präfix umbenennen
Worum geht es in diesem Teil?
In diesem fünften Teil des Batch-Grundkurses benennen wir Dateien und Ordner automatisch mit einem Präfix um.
Ein Präfix ist ein Text, der vorne an einen Dateinamen oder Ordnernamen gesetzt wird. Dadurch kann man Dateien sehr schnell einer Kategorie, einem Projekt oder einem bestimmten Zweck zuordnen.
Beispiel:
rechnung.pdf
wird zu:
PROJEKT_rechnung.pdf
Oder bei den SendTo-Varianten:
Einnahmen_rechnung.pdf
Ausgaben_rechnung.pdf
Kasse_bon001.pdf
Sonstige_notiz.txt
Zum Beispiel:

Vorher

Nachher
Das ist besonders praktisch für Scans, Belege, Downloads, Projektdateien, Verwaltungsordner oder andere Dateien, die schnell markiert oder kategorisiert werden sollen.
Warum ist dieses Beispiel praktisch?
Im Alltag entstehen oft Dateien mit sehr allgemeinen Namen:
scan001.pdf
scan002.pdf
rechnung.pdf
beleg.jpg
notiz.txt
Wenn diese Dateien später in einem gemeinsamen Ordner landen, ist nicht mehr sofort klar, wozu sie gehören. Mit einem Präfix kann man diese Dateien schneller einordnen.
Beispiel für Belege:
Einnahmen_scan001.pdf
Ausgaben_rechnung.pdf
Kasse_bon001.pdf
Sonstige_notiz.txt
Dadurch bleiben die Dateien auch dann verständlicher, wenn sie später verschoben, archiviert oder weiterverarbeitet werden.
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 005:
Download Batch Grundkurs: 005_Dateien_mit_Praefix_umbenennen 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\005_Dateien_mit_Praefix_umbenennen
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\005_Dateien_mit_Praefix_umbenennen
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 oder Ordner 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
Dieses Paket enthält mehrere Varianten. Viele Dateien unterscheiden sich nur durch den verwendeten Präfix oder dadurch, ob es sich um eine Test- oder Scharf-Version handelt.
Aktueller Ordner
005_dateien_mit_praefix_umbenennen_test.bat
005_dateien_mit_praefix_umbenennen_mit_log_und_clipboard_test.bat
SendTo: markierte Elemente selbst umbenennen
005_sendto_praefix_ausgaben_test.bat
005_sendto_praefix_ausgaben.bat
005_sendto_praefix_einnahmen_test.bat
005_sendto_praefix_einnahmen.bat
005_sendto_praefix_kasse_test.bat
005_sendto_praefix_kasse.bat
005_sendto_praefix_sonstige_test.bat
005_sendto_praefix_sonstige.bat
SendTo: Dateien im Ordnerinhalt umbenennen
005_sendto_ordnerinhalt_praefix_ausgaben_test.bat
005_sendto_ordnerinhalt_praefix_ausgaben.bat
005_sendto_ordnerinhalt_praefix_einnahmen_test.bat
005_sendto_ordnerinhalt_praefix_einnahmen.bat
005_sendto_ordnerinhalt_praefix_kasse_test.bat
005_sendto_ordnerinhalt_praefix_kasse.bat
005_sendto_ordnerinhalt_praefix_sonstige_test.bat
005_sendto_ordnerinhalt_praefix_sonstige.bat
Welche Variante brauche ich?
- Aktueller Ordner: Wenn alle Dateien im Ordner der Batchdatei mit einem festen Präfix umbenannt werden sollen.
- Mit Log und Zwischenablage: Wenn zusätzlich ein Protokoll erstellt und in die Zwischenablage kopiert werden soll.
- SendTo Elemente umbenennen: Wenn die im Explorer markierten Dateien oder Ordner selbst umbenannt werden sollen.
- SendTo Ordnerinhalt umbenennen: Wenn markierte Ordner übergeben werden und die Dateien direkt innerhalb dieser Ordner einen Präfix bekommen sollen.
Der wichtigste Unterschied: Elemente oder Ordnerinhalt?
Bei Teil 005 ist dieser Unterschied sehr wichtig.
SendTo Elemente umbenennen
Diese Varianten benennen die markierten Elemente selbst um.
Wenn du im Explorer diese Datei markierst:
rechnung.pdf
und an 005_sendto_praefix_einnahmen_test.bat sendest, würde daraus im Testmodus:
Einnahmen_rechnung.pdf
Wenn du einen Ordner markierst, wird der Ordner selbst umbenannt.
SendTo Ordnerinhalt umbenennen
Diese Varianten benennen nicht den übergebenen Ordner selbst um. Stattdessen werden die Dateien direkt innerhalb dieses Ordners verarbeitet.
Beispiel:
Scans
├── scan001.pdf
└── scan002.pdf
Nach Anwendung einer Ordnerinhalt-Variante mit dem Präfix Einnahmen_:
Scans
├── Einnahmen_scan001.pdf
└── Einnahmen_scan002.pdf
Der Ordner Scans bleibt dabei unverändert.
Verwendete Präfixe
Die SendTo-Varianten verwenden vorbereitete Präfixe:
| Variante | Präfix |
|---|---|
| Ausgaben | Ausgaben_ |
| Einnahmen | Einnahmen_ |
| Kasse | Kasse_ |
| Sonstige | Sonstige_ |
Die einfachen Varianten im aktuellen Ordner verwenden standardmäßig den Präfix:
PROJEKT_
Variante 1: Dateien im aktuellen Ordner mit Präfix umbenennen
Die Datei heißt:
005_dateien_mit_praefix_umbenennen_test.bat
Diese Variante wird in den Ordner kopiert, dessen Dateien mit einem Präfix versehen werden sollen.
Der komplette Code der einfachen Variante
@echo off
REM ============================================================
REM TOPTORIALS OFFICE - Batch Grundkurs
REM Script: 005_dateien_mit_praefix_umbenennen_test.bat
REM Beschreibung: Benennt Dateien im aktuellen Ordner mit einem Praefix um.
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 "PRAEFIX=PROJEKT_"
set /a ANZAHL=0
set /a UEBERSPRUNGEN=0
echo %~n0 | find /i "_test" >nul
if not errorlevel 1 set "TESTMODUS=JA"
echo Dateien werden mit Praefix umbenannt...
echo.
echo Testmodus: %TESTMODUS%
echo Praefix: %PRAEFIX%
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 %%~nxf | find /i "%PRAEFIX%" >nul
if not errorlevel 1 (
echo UEBERSPRUNGEN: "%%~nxf" - Praefix ist bereits enthalten
set /a UEBERSPRUNGEN+=1
) else (
if exist "%PRAEFIX%%%~nxf" (
echo UEBERSPRUNGEN: "%%~nxf" - Zieldatei existiert bereits
set /a UEBERSPRUNGEN+=1
) else (
if "%TESTMODUS%"=="JA" (
echo WUERDE UMBENENNEN: "%%~nxf" zu "%PRAEFIX%%%~nxf"
set /a ANZAHL+=1
) else (
ren "%%~nxf" "%PRAEFIX%%%~nxf"
echo UMBENANNT: "%%~nxf" zu "%PRAEFIX%%%~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 Variante erklärt
Testmodus erkennen
set "TESTMODUS=NEIN"
set "PRAEFIX=PROJEKT_"
echo %~n0 | find /i "_test" >nul
if not errorlevel 1 set "TESTMODUS=JA"
Die Variable TESTMODUS steht zuerst auf NEIN. Danach wird geprüft, ob der Dateiname der Batchdatei den Text _test enthält.
Wenn _test im Dateinamen enthalten ist, wird nur eine Vorschau angezeigt. Ohne _test wird wirklich umbenannt, allerdings erst nach einer zusätzlichen Sicherheitsabfrage.
Der Präfix wird mit dieser Zeile festgelegt:
set "PRAEFIX=PROJEKT_"
Wenn du einen anderen Präfix verwenden möchtest, kannst du genau diese Zeile ändern.
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.
Dateien im aktuellen Ordner durchlaufen
for %%f in (*.*) do (
...
)
Diese Schleife verarbeitet alle Dateien im aktuellen Ordner.
Die eigene Batchdatei wird mit dieser Prüfung ausgeschlossen:
if not "%%~nxf"=="%~nx0" (
%~nx0 ist der Name der aktuell laufenden Batchdatei. Dadurch benennt sich das Skript nicht selbst um.
Prüfen, ob der Präfix bereits enthalten ist
echo %%~nxf | find /i "%PRAEFIX%" >nul
Mit find /i wird geprüft, ob der Präfix bereits im Dateinamen vorkommt. /i bedeutet, dass Groß- und Kleinschreibung ignoriert wird.
Wenn der Präfix bereits enthalten ist, wird die Datei übersprungen. Dadurch wird verhindert, dass eine Datei mehrfach hintereinander verlängert wird.
Namenskonflikte verhindern
if exist "%PRAEFIX%%%~nxf" (
echo UEBERSPRUNGEN: "%%~nxf" - Zieldatei existiert bereits
)
Bevor eine Datei umbenannt wird, prüft das Skript, ob der Zielname bereits existiert.
Wenn die Zieldatei schon vorhanden ist, wird nicht umbenannt. Dadurch wird nichts überschrieben.
Dateien umbenennen
ren "%%~nxf" "%PRAEFIX%%%~nxf"
Mit ren wird die Datei umbenannt. Der neue Name besteht aus dem Präfix und dem bisherigen Dateinamen.
Variante 2: Dateien mit Präfix umbenennen, Log schreiben und Zwischenablage nutzen
Die Datei heißt:
005_dateien_mit_praefix_umbenennen_mit_log_und_clipboard_test.bat
Diese Variante arbeitet wie die einfache Variante, erstellt aber zusätzlich eine Logdatei und kopiert deren Inhalt in die Zwischenablage.
Der komplette Code der Log-Variante
@echo off
REM ============================================================
REM TOPTORIALS OFFICE - Batch Grundkurs
REM Script: 005_dateien_mit_praefix_umbenennen_mit_log_und_clipboard_test.bat
REM Beschreibung: Benennt Dateien mit einem Praefix um, 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 "PRAEFIX=PROJEKT_"
set /a ANZAHL=0
set /a UEBERSPRUNGEN=0
echo %~n0 | find /i "_test" >nul
if not errorlevel 1 set "TESTMODUS=JA"
set "DATUM=%date:~-4%-%date:~3,2%-%date:~0,2%"
set "ZEIT=%time:~0,2%-%time:~3,2%-%time:~6,2%"
set "ZEIT=%ZEIT: =0%"
set "LOGDATEI=umbenennprotokoll_%DATUM%_%ZEIT%.log"
echo Dateien werden mit Praefix umbenannt...>>"%LOGDATEI%"
echo Testmodus: %TESTMODUS%>>"%LOGDATEI%"
echo Praefix: %PRAEFIX%>>"%LOGDATEI%"
echo Logdatei: %LOGDATEI%>>"%LOGDATEI%"
echo.>>"%LOGDATEI%"
echo Dateien werden mit Praefix umbenannt...
echo.
echo Testmodus: %TESTMODUS%
echo Praefix: %PRAEFIX%
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 %%~nxf | find /i "%PRAEFIX%" >nul
if not errorlevel 1 (
echo UEBERSPRUNGEN: "%%~nxf" - Praefix ist bereits enthalten
echo UEBERSPRUNGEN: "%%~nxf" - Praefix ist bereits enthalten>>"%LOGDATEI%"
set /a UEBERSPRUNGEN+=1
) else (
if exist "%PRAEFIX%%%~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 "%PRAEFIX%%%~nxf"
echo WUERDE UMBENENNEN: "%%~nxf" zu "%PRAEFIX%%%~nxf">>"%LOGDATEI%"
set /a ANZAHL+=1
) else (
ren "%%~nxf" "%PRAEFIX%%%~nxf"
echo UMBENANNT: "%%~nxf" zu "%PRAEFIX%%%~nxf"
echo UMBENANNT: "%%~nxf" zu "%PRAEFIX%%%~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
Zeitstempel für die Logdatei
set "DATUM=%date:~-4%-%date:~3,2%-%date:~0,2%"
set "ZEIT=%time:~0,2%-%time:~3,2%-%time:~6,2%"
set "ZEIT=%ZEIT: =0%"
set "LOGDATEI=umbenennprotokoll_%DATUM%_%ZEIT%.log"
Diese Zeilen erzeugen einen Zeitstempel für die Logdatei.
Dadurch entsteht zum Beispiel ein Dateiname wie:
umbenennprotokoll_2026-06-27_15-30-45.log
Logdatei vom Umbenennen ausschließen
if not "%%~nxf"=="%LOGDATEI%" (
Die Logdatei soll nicht selbst umbenannt werden. Deshalb wird sie in der Schleife zusätzlich ausgeschlossen.
In die Logdatei schreiben
echo UMBENANNT: "%%~nxf" zu "%PRAEFIX%%%~nxf">>"%LOGDATEI%"
Mit >> wird Text an die Logdatei angehängt.
Logdatei in die Zwischenablage kopieren
type "%LOGDATEI%" | clip
Am Ende wird die Logdatei gelesen und in die Windows-Zwischenablage kopiert.
Variante 3: SendTo – markierte Dateien oder Ordner selbst umbenennen
Diese Varianten sind für das Windows-Menü Senden an gedacht.
Sie benennen die im Explorer markierten Dateien oder Ordner selbst um.
Es gibt diese Varianten jeweils für die Präfixe Ausgaben_, Einnahmen_, Kasse_ und Sonstige_.
Der folgende Code zeigt stellvertretend die Variante mit Einnahmen_ im Testmodus:
005_sendto_praefix_einnahmen_test.bat
Der komplette Code einer typischen SendTo-Elemente-Variante
@echo off
REM ============================================================
REM TOPTORIALS OFFICE - Batch Grundkurs
REM Script: 005_sendto_praefix_einnahmen_test.bat
REM Beschreibung: Benennt uebergebene Dateien oder Ordner mit dem Praefix Einnahmen_ um.
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 "PRAEFIX=Einnahmen_"
set /a ANZAHL=0
set /a UEBERSPRUNGEN=0
echo %~n0 | find /i "_test" >nul
if not errorlevel 1 set "TESTMODUS=JA"
if "%~1"=="" (
echo Bitte sende 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
)
echo Dateien oder Ordner werden mit Praefix umbenannt...
echo.
echo Praefix: %PRAEFIX%
echo Testmodus: %TESTMODUS%
echo.
if "%TESTMODUS%"=="JA" goto start
echo ACHTUNG: Dieses Skript wird Dateien oder Ordner 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.
:loop
if "%~1"=="" goto fertig
set "QUELLE=%~1"
set "ORDNER=%~dp1"
set "NAME=%~nx1"
set "ZIEL=%~dp1%PRAEFIX%%~nx1"
echo %~nx1 | find /i "%PRAEFIX%" >nul
if not errorlevel 1 (
echo UEBERSPRUNGEN: "%~nx1" - Praefix ist bereits enthalten
set /a UEBERSPRUNGEN+=1
shift
goto loop
)
if exist "%ZIEL%" (
echo UEBERSPRUNGEN: "%~nx1" - Ziel existiert bereits
set /a UEBERSPRUNGEN+=1
shift
goto loop
)
if "%TESTMODUS%"=="JA" (
echo WUERDE UMBENENNEN: "%~nx1" zu "%PRAEFIX%%~nx1"
set /a ANZAHL+=1
) else (
ren "%QUELLE%" "%PRAEFIX%%~nx1"
echo UMBENANNT: "%~nx1" zu "%PRAEFIX%%~nx1"
set /a ANZAHL+=1
)
shift
goto loop
:fertig
echo.
echo Fertig.
echo.
if "%TESTMODUS%"=="JA" (
echo Anzahl Elemente, 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% Elemente
echo Uebersprungen: %UEBERSPRUNGEN% Elemente
)
echo.
pause
Code der SendTo-Elemente-Variante erklärt
Prüfen, ob etwas übergeben wurde
if "%~1"=="" (
echo Bitte sende 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
)
Diese Prüfung stellt sicher, dass überhaupt Dateien oder Ordner an das Skript übergeben wurden.
Parameter nacheinander verarbeiten
:loop
if "%~1"=="" goto fertig
...
shift
goto loop
Diese Schleife verarbeitet alle übergebenen Elemente nacheinander.
shift verschiebt die Parameter. Dadurch kann das Skript mehrere markierte Dateien oder Ordner verarbeiten.
Quelle und Ziel vorbereiten
set "QUELLE=%~1"
set "ORDNER=%~dp1"
set "NAME=%~nx1"
set "ZIEL=%~dp1%PRAEFIX%%~nx1"
Hier werden wichtige Informationen zum aktuell übergebenen Element gespeichert:
QUELLEist der vollständige übergebene Pfad.ORDNERist der Ordnerpfad des Elements.NAMEist der Name des Elements.ZIEList der neue Zielname mit Präfix.
Umbenennen mit ren
ren "%QUELLE%" "%PRAEFIX%%~nx1"
Die Datei oder der Ordner wird mit ren umbenannt. Als neuer Name wird der Präfix vor den bisherigen Namen gesetzt.
Variante 4: SendTo – Dateien im Inhalt übergebener Ordner umbenennen
Diese Varianten sind ebenfalls für Senden an gedacht, arbeiten aber anders.
Hier werden nicht die übergebenen Ordner selbst umbenannt. Stattdessen werden die Dateien direkt in diesen Ordnern verarbeitet.
Es gibt diese Varianten ebenfalls für die Präfixe Ausgaben_, Einnahmen_, Kasse_ und Sonstige_.
Der folgende Code zeigt stellvertretend die Variante mit Einnahmen_ im Testmodus:
005_sendto_ordnerinhalt_praefix_einnahmen_test.bat
Der komplette Code einer typischen SendTo-Ordnerinhalt-Variante
@echo off
REM ============================================================
REM TOPTORIALS OFFICE - Batch Grundkurs
REM Script: 005_sendto_ordnerinhalt_praefix_einnahmen_test.bat
REM Beschreibung: Benennt Dateien in uebergebenen Ordnern mit dem Praefix Einnahmen_ um.
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 "PRAEFIX=Einnahmen_"
set /a ANZAHL=0
set /a UEBERSPRUNGEN=0
set /a ORDNER_ANZAHL=0
echo %~n0 | find /i "_test" >nul
if not errorlevel 1 set "TESTMODUS=JA"
if "%~1"=="" (
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
)
echo Dateien in uebergebenen Ordnern werden mit Praefix umbenannt...
echo.
echo Praefix: %PRAEFIX%
echo Testmodus: %TESTMODUS%
echo.
if "%TESTMODUS%"=="JA" goto start
echo ACHTUNG: Dieses Skript wird Dateien in den uebergebenen Ordnern 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.
:ordner_loop
if "%~1"=="" goto fertig
if not exist "%~1\" (
echo UEBERSPRUNGEN: "%~1" ist kein Ordner.
set /a UEBERSPRUNGEN+=1
shift
goto ordner_loop
)
set /a ORDNER_ANZAHL+=1
echo Ordner wird verarbeitet:
echo %~1
echo.
for %%f in ("%~1\*.*") do (
if exist "%%~f" (
echo %%~nxf | find /i "%PRAEFIX%" >nul
if not errorlevel 1 (
echo UEBERSPRUNGEN: "%%~nxf" - Praefix ist bereits enthalten
set /a UEBERSPRUNGEN+=1
) else (
if exist "%%~dpf%PRAEFIX%%%~nxf" (
echo UEBERSPRUNGEN: "%%~nxf" - Zieldatei existiert bereits
set /a UEBERSPRUNGEN+=1
) else (
if "%TESTMODUS%"=="JA" (
echo WUERDE UMBENENNEN: "%%~nxf" zu "%PRAEFIX%%%~nxf"
set /a ANZAHL+=1
) else (
ren "%%~f" "%PRAEFIX%%%~nxf"
echo UMBENANNT: "%%~nxf" zu "%PRAEFIX%%%~nxf"
set /a ANZAHL+=1
)
)
)
)
)
echo.
shift
goto ordner_loop
:fertig
echo.
echo Fertig.
echo.
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
Code der SendTo-Ordnerinhalt-Variante erklärt
Nur Ordner verarbeiten
if not exist "%~1\" (
echo UEBERSPRUNGEN: "%~1" ist kein Ordner.
set /a UEBERSPRUNGEN+=1
shift
goto ordner_loop
)
Diese Variante erwartet Ordner. Wenn ein übergebenes Element kein Ordner ist, wird es übersprungen.
Mehrere Ordner nacheinander verarbeiten
:ordner_loop
if "%~1"=="" goto fertig
...
shift
goto ordner_loop
Diese Schleife verarbeitet alle übergebenen Ordner nacheinander.
Dateien im Ordner durchlaufen
for %%f in ("%~1\*.*") do (
...
)
Diese Schleife verarbeitet die Dateien direkt im übergebenen Ordner.
Unterordner werden dabei nicht rekursiv durchsucht.
Dateien im Ordner umbenennen
ren "%%~f" "%PRAEFIX%%%~nxf"
Die Datei wird direkt in ihrem Ordner umbenannt. Der Ordner selbst bleibt unverändert.
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:
005_sendto_praefix_einnahmen_test.bat
Im Testmodus erscheinen Meldungen wie:
WUERDE UMBENENNEN: "rechnung.pdf" zu "Einnahmen_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.
Was passiert bei Namenskonflikten?
Wenn der neue Zielname bereits existiert, wird das Element übersprungen.
Beispiel:
rechnung.pdf
Einnahmen_rechnung.pdf
Wenn rechnung.pdf mit Einnahmen_ umbenannt werden soll, der Zielname Einnahmen_rechnung.pdf aber bereits existiert, wird die Datei nicht umbenannt.
Dadurch wird verhindert, dass vorhandene Dateien überschrieben werden.
Was passiert, wenn der Präfix bereits enthalten ist?
Wenn der Präfix bereits im Namen vorkommt, wird das Element übersprungen.
Das verhindert, dass Dateinamen bei mehrfacher Ausführung immer länger werden.
Beispiel:
Einnahmen_rechnung.pdf
wird nicht erneut zu:
Einnahmen_Einnahmen_rechnung.pdf
Typische Anpassungen
Der wichtigste Anpassungspunkt ist die Präfix-Zeile:
set "PRAEFIX=PROJEKT_"
oder bei den SendTo-Varianten zum Beispiel:
set "PRAEFIX=Einnahmen_"
Wenn du einen anderen Präfix verwenden möchtest, änderst du einfach den Text zwischen dem Gleichheitszeichen und dem schließenden Anführungszeichen.
Beispiele:
set "PRAEFIX=Kunde_A_"
set "PRAEFIX=Projekt_2026_"
set "PRAEFIX=Archiv_"
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:
005_dateien_mit_praefix_umbenennen_test.bat
und nicht:
005_dateien_mit_praefix_umbenennen_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.
Das Skript überspringt Dateien
Das kann mehrere Gründe haben:
- Der Präfix ist bereits im Dateinamen enthalten.
- Der Zielname existiert bereits.
- Bei der Ordnerinhalt-Variante wurde kein Ordner übergeben.
Ich habe die falsche SendTo-Variante verwendet
Wenn ein Ordner selbst umbenannt wurde, obwohl eigentlich seine Dateien umbenannt werden sollten, wurde wahrscheinlich eine Elemente-Variante statt einer Ordnerinhalt-Variante verwendet.
Merke:
005_sendto_praefix_...benennt die markierten Elemente selbst um.005_sendto_ordnerinhalt_praefix_...benennt Dateien innerhalb markierter Ordner um.
Was haben wir gelernt?
In diesem Teil wurden mehrere wichtige Batch-Grundlagen gezeigt:
ren benennt Dateien oder Ordner um.
for kann Dateien im aktuellen Ordner durchlaufen.
%~nx0 ist der Name der laufenden Batchdatei.
%~1 ist der erste übergebene Parameter.
%~dp1 ist der Ordnerpfad eines übergebenen Elements.
%~nx1 ist der Name eines übergebenen Elements.
find /i kann prüfen, ob ein Text bereits im Namen enthalten ist.
if exist verhindert Namenskonflikte.
shift verarbeitet mehrere übergebene Elemente nacheinander.
_test im Dateinamen kann als Testmodus verwendet werden.
type und clip kopieren ein Log in die Zwischenablage.
Damit ist dieses Skript-Paket ein sehr praktisches Werkzeug, um Dateien, Ordner oder Ordnerinhalte schnell mit einem passenden Präfix zu versehen.
Video zu diesem Tutorial:
Das könnte Dich auch interessieren
Keine Einträge gefunden

