Batch Grundkurs 008: Text in Dateinamen suchen und ersetzen
Worum geht es in diesem Teil?
In diesem achten Teil des Batch-Grundkurses ersetzen wir Text in Dateinamen automatisch mit einer Batchdatei.
Das Skript fragt beim Start ab, welcher Text gesucht und durch welchen neuen Text ersetzt werden soll. Dadurch muss der Code nicht jedes Mal manuell angepasst werden.
Beispiel:
IMG_001.jpg
IMG_002.jpg
IMG_003.jpg

Beispiel mit Dateinamen
Wenn IMG_ durch Foto_ ersetzt wird, entsteht:
Foto_001.jpg
Foto_002.jpg
Foto_003.jpg

Beispiel mit Dateinamen wurde ersetzt
Wenn beim Ersatztext nichts eingegeben wird, kann der Suchtext auch komplett aus dem Dateinamen entfernt werden.
Warum ist dieses Beispiel praktisch?
Dateinamen enthalten oft unerwünschte oder unpassende Textteile. Typische Beispiele sind:
IMG_
DSC_
Kopie von
Download_
Scan_
alt_
neu_
Projektname_
Mit diesem Skript können solche Textteile gezielt ersetzt oder entfernt werden.
Das ist zum Beispiel nützlich für:
Bilder umbenennen
Scans bereinigen
Downloads anpassen
Exportdateien vereinheitlichen
Projektdateien korrigieren
Dateinamen vor einer Archivierung bereinigen
Durch die Eingabeabfrage ist das Skript flexibler als Varianten, bei denen der Suchtext fest im Code steht.
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 008:
Download Batch Grundkurs: 008_Text_in_Dateinamen_ersetzen 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\008_Text_in_Dateinamen_ersetzen
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\008_Text_in_Dateinamen_ersetzen
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 zwei Batchdateien:
008_text_in_dateinamen_ersetzen_test.bat
008_sendto_text_in_dateinamen_ersetzen_test.bat
Welche Variante brauche ich?
- Aktueller Ordner: Wenn alle passenden Dateien im Ordner der Batchdatei verarbeitet werden sollen.
- SendTo-Variante: Wenn du Dateien oder Ordner gezielt im Explorer markieren und per Senden an übergeben möchtest.
Was bedeutet Suchen und Ersetzen?
Das Skript arbeitet nach einem einfachen Prinzip:
Alter Text wird gesucht.
Wenn er im Dateinamen vorkommt, wird er durch den neuen Text ersetzt.
Beispiel:
Suchtext: IMG_
Ersatztext: Foto_
Aus:
IMG_001.jpg
wird:
Foto_001.jpg
Wenn der Ersatztext leer bleibt, wird der Suchtext entfernt.
Beispiel:
Suchtext: Kopie von
Ersatztext: leer lassen
Aus:
Kopie von Rechnung.pdf
wird:
Rechnung.pdf
Variante 1: Text in Dateinamen im aktuellen Ordner ersetzen
Die Datei heißt:
008_text_in_dateinamen_ersetzen_test.bat
Diese Variante wird in den Ordner kopiert, dessen Dateien bearbeitet werden sollen.
Beim Start fragt das Skript nach:
- dem Suchtext
- dem Ersatztext
Wenn kein Suchtext eingegeben wird, beendet sich das Skript ohne Änderung.
Der komplette Code der einfachen Variante
@echo off
REM ============================================================
REM TOPTORIALS OFFICE - Batch Grundkurs
REM Script: 008_text_in_dateinamen_ersetzen_test.bat
REM Beschreibung: Ersetzt oder entfernt Text in 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 Text in Dateinamen ersetzen
echo.
echo Dieses Skript ersetzt einen Text in Dateinamen.
echo Wenn bei "Neuer Text" nichts eingegeben wird,
echo wird der alte Text aus dem Dateinamen entfernt.
echo.
set /p "ALTER_TEXT=Alter Text / Suchtext: "
if "%ALTER_TEXT%"=="" (
echo.
echo Es wurde kein Suchtext eingegeben.
echo Es wird nichts ersetzt.
echo.
pause
exit /b
)
set /p "NEUER_TEXT=Neuer Text / Ersatztext: "
echo.
echo Alter Text: %ALTER_TEXT%
echo Neuer Text: %NEUER_TEXT%
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" (
set "DATEINAME=%%~nxf"
set "DATEIBASIS=%%~nf"
set "DATEIENDUNG=%%~xf"
echo(!AUSGESCHLOSSEN! | find /i " !DATEIENDUNG! " >nul
if not errorlevel 1 (
echo UEBERSPRUNGEN: "!DATEINAME!" - Dateiendung ist ausgeschlossen
set /a UEBERSPRUNGEN+=1
) else (
echo(!DATEINAME! | find /i "%ALTER_TEXT%" >nul
if errorlevel 1 (
echo UEBERSPRUNGEN: "!DATEINAME!" - Suchtext wurde nicht gefunden
set /a UEBERSPRUNGEN+=1
) else (
set "NEUERNAME=!DATEINAME:%ALTER_TEXT%=%NEUER_TEXT%!"
set "NEUEBASIS=!DATEIBASIS:%ALTER_TEXT%=%NEUER_TEXT%!"
if "!NEUEBASIS!"=="" set "NEUERNAME=Unbenannt!DATEIENDUNG!"
if "!NEUERNAME!"=="!DATEINAME!" (
echo UEBERSPRUNGEN: "!DATEINAME!" - keine Aenderung notwendig
set /a UEBERSPRUNGEN+=1
) else (
call :freien_namen_suchen "!NEUERNAME!"
if "%TESTMODUS%"=="JA" (
echo WUERDE UMBENENNEN: "!DATEINAME!" zu "!ZIELNAME!"
set /a ANZAHL+=1
) else (
ren "!DATEINAME!" "!ZIELNAME!"
echo UMBENANNT: "!DATEINAME!" 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 "ZIELNAME=%~1"
if not exist "!ZIELNAME!" exit /b
for %%Z in ("!ZIELNAME!") do (
set "BASIS=%%~nZ"
set "ENDUNG=%%~xZ"
)
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 einfachen 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 eine Vorschau angezeigt.
Sicherheitsabfrage bei echter Ausführung
if "%TESTMODUS%"=="JA" goto eingabe
echo ACHTUNG: Dieses Skript wird Dateien wirklich umbenennen.
echo.
set /p "ANTWORT=Zum Fortfahren JA eingeben: "
if /i "%ANTWORT%"=="JA" goto eingabe
Wenn das Skript nicht im Testmodus läuft, muss zuerst JA eingegeben werden. Erst danach werden Dateien wirklich umbenannt.
Benutzereingaben abfragen
set /p "SUCHTEXT=Welcher Text soll gesucht werden? "
set /p "ERSATZTEXT=Durch welchen Text soll ersetzt werden? "
Mit set /p kann eine Eingabe vom Benutzer abgefragt werden.
Der eingegebene Suchtext wird in der Variable SUCHTEXT gespeichert. Der Ersatztext wird in der Variable ERSATZTEXT gespeichert.
Abbruch, wenn kein Suchtext eingegeben wurde
if "%SUCHTEXT%"=="" (
echo Kein Suchtext eingegeben. Skript wird beendet.
echo.
pause
exit /b
)
Ohne Suchtext kann das Skript nicht sinnvoll arbeiten. Deshalb wird es beendet, wenn dieses Feld leer bleibt.
Dateien durchlaufen
for %%f in (*.*) do (
...
)
Diese Schleife verarbeitet alle Dateien im aktuellen Ordner.
Die eigene Batchdatei wird ausgeschlossen, damit sich das Skript nicht selbst umbenennt.
Text im Dateinamen ersetzen
set "NEUERNAME=!NAME:%SUCHTEXT%=%ERSATZTEXT%!"
Diese Zeile ist der Kern des Skripts.
Sie ersetzt den Inhalt von SUCHTEXT im Dateinamen durch den Inhalt von ERSATZTEXT.
Wenn ERSATZTEXT leer ist, wird der Suchtext entfernt.
Warum wird verzögerte Variablenerweiterung verwendet?
setlocal enabledelayedexpansion
Diese Zeile aktiviert die verzögerte Variablenerweiterung.
Das ist notwendig, weil Variablen innerhalb einer Schleife geändert und direkt wieder gelesen werden. Dafür wird die Schreibweise mit Ausrufezeichen verwendet, zum Beispiel !NEUERNAME!.
Leere Dateinamen verhindern
Wenn durch das Entfernen des Suchtextes kein sinnvoller Dateiname mehr übrig bleibt, verwendet das Skript automatisch einen Ersatznamen.
Typischer Ersatzname:
Unbenannt
So wird verhindert, dass eine Datei keinen gültigen Namen mehr hätte.
Namenskonflikte vermeiden
Wenn der Zielname bereits existiert, erzeugt das Skript einen freien Namen mit Nummerierung.
Beispiel:
Unbenannt.txt
Unbenannt_001.txt
Unbenannt_002.txt
Variante 2: SendTo – Text in Dateinamen ersetzen
Die Datei heißt:
008_sendto_text_in_dateinamen_ersetzen_test.bat
Diese Variante ist für das Windows-Menü Senden an gedacht.
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 komplette Code der SendTo-Variante
@echo off
REM ============================================================
REM TOPTORIALS OFFICE - Batch Grundkurs
REM Script: 008_sendto_text_in_dateinamen_ersetzen_test.bat
REM Beschreibung: Ersetzt oder entfernt Text in 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 Text in Dateinamen ersetzen
echo.
echo Dieses Skript ersetzt einen Text in Dateinamen.
echo Einzelne Dateien werden direkt bearbeitet.
echo Bei Ordnern werden die Dateien direkt in diesem Ordner bearbeitet.
echo.
echo Wenn bei "Neuer Text" nichts eingegeben wird,
echo wird der alte Text aus dem Dateinamen entfernt.
echo.
set /p "ALTER_TEXT=Alter Text / Suchtext: "
if "%ALTER_TEXT%"=="" (
echo.
echo Es wurde kein Suchtext eingegeben.
echo Es wird nichts ersetzt.
echo.
pause
exit /b
)
set /p "NEUER_TEXT=Neuer Text / Ersatztext: "
echo.
echo Alter Text: %ALTER_TEXT%
echo Neuer Text: %NEUER_TEXT%
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 "DATEIBASIS=%~n1"
set "DATEIENDUNG=%~x1"
echo(!AUSGESCHLOSSEN! | find /i " !DATEIENDUNG! " >nul
if not errorlevel 1 goto dateiendung_ausgeschlossen
echo(!DATEINAME! | find /i "%ALTER_TEXT%" >nul
if errorlevel 1 goto suchtext_nicht_gefunden
set "NEUERNAME=!DATEINAME:%ALTER_TEXT%=%NEUER_TEXT%!"
set "NEUEBASIS=!DATEIBASIS:%ALTER_TEXT%=%NEUER_TEXT%!"
if "!NEUEBASIS!"=="" set "NEUERNAME=Unbenannt!DATEIENDUNG!"
if "!NEUERNAME!"=="!DATEINAME!" goto keine_aenderung
call :freien_namen_suchen "!DATEIORDNER!" "!NEUERNAME!"
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
:suchtext_nicht_gefunden
echo UEBERSPRUNGEN: "!DATEINAME!" - Suchtext wurde nicht gefunden
set /a UEBERSPRUNGEN+=1
exit /b
:keine_aenderung
echo UEBERSPRUNGEN: "!DATEINAME!" - keine Aenderung notwendig
set /a UEBERSPRUNGEN+=1
exit /b
:freien_namen_suchen
set "ZIELORDNER=%~1"
set "ZIELNAME=%~2"
if not exist "%ZIELORDNER%%ZIELNAME%" exit /b
for %%Z in ("%ZIELNAME%") do (
set "BASIS=%%~nZ"
set "ENDUNG=%%~xZ"
)
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 "%ZIELORDNER%!ZIELNAME!" (
set /a NR+=1
goto naechster_name
)
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
Code der SendTo-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.
Wenn die Batchdatei einfach per Doppelklick gestartet wird, fehlt dieser Parameter. Dann zeigt das Skript einen Hinweis an und beendet sich.
Dateien und Ordner unterscheiden
Die SendTo-Variante kann sowohl Dateien als auch Ordner entgegennehmen.
Dateien werden direkt verarbeitet. Bei Ordnern werden die Dateien direkt in diesem Ordner verarbeitet.
Unterordner werden dabei nicht rekursiv durchsucht.
Mehrere übergebene Elemente verarbeiten
:element_loop
if "%~1"=="" goto fertig
...
shift
goto element_loop
Diese Schleife verarbeitet alle übergebenen Dateien oder Ordner nacheinander.
shift verschiebt die Parameter. Dadurch kann das Skript mehrere markierte Elemente verarbeiten.
Aktuelles Element auswerten
if exist "%~1\" goto element_ist_ordner
if exist "%~1" goto element_ist_datei
Diese Prüfungen unterscheiden, ob das übergebene Element ein Ordner oder eine Datei ist.
Je nach Ergebnis springt das Skript in den passenden Verarbeitungsbereich.
Dateien in einem Ordner verarbeiten
for %%f in ("%~1\*.*") do (
...
)
Wenn ein Ordner übergeben wurde, werden die Dateien direkt in diesem Ordner verarbeitet.
Auch hier gilt: Unterordner werden nicht rekursiv durchsucht.
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 Dateien oder Ordner markieren und mit Rechtsklick > Senden an an das Skript übergeben.
Was passiert im Testmodus?
Solange _test im Dateinamen steht, wird nur angezeigt, was passieren würde.
Beispiel:
008_text_in_dateinamen_ersetzen_test.bat
Im Testmodus erscheinen Meldungen wie:
WUERDE UMBENENNEN: "IMG_001.jpg" zu "Foto_001.jpg"
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?
Wenn der neue Zielname bereits existiert, wird nicht überschrieben.
Stattdessen sucht das Skript nach einem freien Namen mit Nummerierung.
Beispiel:
Meine_Datei.txt
Meine_Datei_001.txt
Meine_Datei_002.txt
Das ist wichtig, weil durch Suchen und Ersetzen mehrere unterschiedliche Dateien theoretisch denselben neuen Namen bekommen könnten.
Was passiert, wenn nach dem Ersetzen kein Name mehr übrig bleibt?
Wenn der Suchtext den kompletten Dateinamen ohne Erweiterung entfernt, darf keine Datei ohne Namen entstehen.
Beispiel:
Dateiname: Rechnung.txt
Suchtext: Rechnung
Ersatztext: leer lassen
Das Skript verwendet dann automatisch:
Unbenannt.txt
Wenn Unbenannt.txt bereits existiert, wird eine Nummerierung erzeugt:
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
Dieses Skript benötigt normalerweise keine festen Anpassungen im Code, weil Suchtext und Ersatztext beim Start abgefragt werden.
Du kannst aber die Ausschlussliste anpassen, falls bestimmte Dateitypen nicht verarbeitet werden sollen.
Typische Such- und Ersetzbeispiele:
IMG_ ersetzen durch Foto_
DSC_ entfernen
Kopie von entfernen
Scan_ ersetzen durch Rechnung_
Leerzeichen ersetzen durch _
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:
008_text_in_dateinamen_ersetzen_test.bat
und nicht:
008_text_in_dateinamen_ersetzen_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 beendet sich sofort nach der Eingabe
Wenn kein Suchtext eingegeben wurde, beendet sich das Skript absichtlich. Ohne Suchtext kann es nicht sinnvoll arbeiten.
Dateien werden übersprungen
Das kann mehrere Gründe haben:
- Der Suchtext kommt im Dateinamen nicht vor.
- Die Dateiendung ist ausgeschlossen.
- Der Zielname existiert bereits und muss nummeriert werden.
- Die eigene Batchdatei wird bewusst übersprungen.
Unterordner werden nicht verarbeitet
Die SendTo-Variante bearbeitet 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:
set /p fragt Benutzereingaben ab.
Variablen können Text in Dateinamen ersetzen.
setlocal enabledelayedexpansion hilft bei Variablen in Schleifen.
ren benennt Dateien um.
if exist verhindert Überschreiben.
Nummerierung kann Namenskonflikte auflösen.
Unbenannt verhindert leere Dateinamen.
SendTo-Skripte können Dateien und Ordner gezielt entgegennehmen.
shift verarbeitet mehrere übergebene Elemente nacheinander.
_test im Dateinamen kann als Testmodus verwendet werden.
Damit ist dieses Skript-Paket ein sehr flexibles Werkzeug, um Dateinamen schnell zu korrigieren, zu vereinheitlichen oder von unerwünschten Textteilen zu bereinigen.
Video zu diesem Tutorial:
Das könnte Dich auch interessieren
Keine Einträge gefunden

