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

            Batch Grundkurs 008: Text in Dateinamen suchen und ersetzen

            • Startseite
            • Tutorials Windows Automatisierung Batch Grundkurs
            • Batch Grundkurs 008: Text in Dateinamen suchen und ersetzen

            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

            Beispiel mit Dateinamen

            Wenn IMG_ durch Foto_ ersetzt wird, entsteht:

            Foto_001.jpg
            Foto_002.jpg
            Foto_003.jpg
            Beispiel mit Dateinamen wurde ersetzt

            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

            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

            • 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
            • PowerShell 7 Grundkurs Teil 007: Zeitstempel hinzufügen und entfernen
            • Batch Grundkurs 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 Word wps spreadsheets Zeilen Zelle Zellen
            KONTAKT   IMPRESSUM    DATENSCHUTZERKLÄRUNG    HAFTUNGSAUSSCHLUSS (Disclaimer)   © copyright TOPTORIALS