TOPTORIALS OFFICE - Python Grundkurs
Script: 005_Dateien_mit_Praefix_umbenennen
Autor: Chris
YouTube: https://www.youtube.com/@TOPTORIALS-OFFICE
Webseite: https://www.toptorials.com
Version: 1.0
Letzte Aktualisierung: 2026-08-12

============================================================

1. Was machen diese Scripte?
============================

Diese Scripte benennen Dateien und Ordner mit Python um und setzen
ein frei wählbares Präfix vor den bisherigen Namen.

Als Präfix kann verwendet werden:

* das aktuelle Datum
* das aktuelle Datum mit Uhrzeit
* ein eigener Text

Beispiele:

Rechnung.pdf
2026-08-12_Rechnung.pdf

Foto.jpg
2026-08-12_14-30-25_Foto.jpg

Beleg.xlsx
Ausgaben_Beleg.xlsx

Es gibt drei Varianten:

00_Einfach
03_SendTo_Elemente_umbenennen
04_SendTo_Ordnerinhalt_umbenennen

Die einfache Variante benennt direkte Dateien im aktuellen Ordner
um.

Die erste SendTo-Variante benennt die im Windows-Explorer
ausgewählten Dateien und Ordner selbst um.

Die zweite SendTo-Variante verarbeitet einen oder mehrere
ausgewählte Ordner und benennt die darin direkt enthaltenen Dateien
um. Die ausgewählten Ordner selbst werden dabei nicht umbenannt.

Unterordner werden in der Ordnerinhalt-Variante nicht durchsucht.

Standardmäßig ist bei allen drei Varianten der sichere Testmodus
aktiv. Er zeigt nur an, was bei einer echten Ausführung passieren
würde.

Im Testmodus werden:

* keine Dateien umbenannt
* keine Ordner umbenannt
* keine vorhandenen Elemente verändert

============================================================

2. Voraussetzungen
===================

Benötigt werden:

* Windows 10 oder Windows 11
* eine installierte Python-Version
* der Python Launcher "py" oder alternativ der Befehl "python"
* Schreibberechtigung für die zu bearbeitenden Dateien und Ordner

Zum Prüfen kann eine Eingabeaufforderung geöffnet werden.

Python Launcher prüfen:

py --version

Python direkt prüfen:

python --version

Die Python-Scripte verwenden ausschließlich Module aus der
Python-Standardbibliothek. Es müssen keine zusätzlichen Pakete mit
pip installiert werden.

Verwendete Module:

datetime
pathlib
subprocess
sys

Die Zwischenablage wird unter Windows über das Programm clip
angesprochen.

============================================================

3. Enthaltene Ordner und Dateien
================================

00_Einfach
005_dateien_mit_praefix_umbenennen.py
005_dateien_mit_praefix_umbenennen_starter_batch_test.bat

03_SendTo_Elemente_umbenennen
005_sendto_elemente_mit_praefix_umbenennen.py
005_sendto_elemente_mit_praefix_umbenennen_starter_batch_test.bat

04_SendTo_Ordnerinhalt_umbenennen
005_sendto_ordnerinhalt_mit_praefix_umbenennen.py
005_sendto_ordnerinhalt_mit_praefix_umbenennen_starter_batch_test.bat

Die Dateien mit der Endung .py enthalten die eigentliche
Python-Logik.

Die Dateien mit der Endung .bat starten die passenden Python-Scripte
und aktivieren abhängig vom eigenen Dateinamen den Testmodus.

============================================================

4. Wichtiger Sicherheitshinweis
===============================

Bitte die Scripte zuerst ausschließlich in einem Testordner mit
unwichtigen Testdateien und Testordnern ausprobieren.

Die mitgelieferten Starter-Batchdateien tragen am Ende ihres Namens:

_test.bat

Solange _test im Namen der Starter-Batchdatei steht, wird das
Python-Script mit folgendem Argument gestartet:

--test

In diesem Modus wird nur angezeigt, welche Elemente bei einer echten
Ausführung umbenannt würden.

Erst wenn die Ausgabe vollständig geprüft wurde, kann _test aus dem
Namen der jeweiligen Starter-Batchdatei entfernt werden.

Beispiel einfache Variante:

Testmodus:
005_dateien_mit_praefix_umbenennen_starter_batch_test.bat

Echtmodus:
005_dateien_mit_praefix_umbenennen_starter_batch.bat

Beispiel SendTo-Variante für ausgewählte Elemente:

Testmodus:
005_sendto_elemente_mit_praefix_umbenennen_starter_batch_test.bat

Echtmodus:
005_sendto_elemente_mit_praefix_umbenennen_starter_batch.bat

Beispiel SendTo-Variante für Ordnerinhalte:

Testmodus:
005_sendto_ordnerinhalt_mit_praefix_umbenennen_starter_batch_test.bat

Echtmodus:
005_sendto_ordnerinhalt_mit_praefix_umbenennen_starter_batch.bat

Im Echtmodus erscheint zusätzlich eine Sicherheitsabfrage.

Zum Fortfahren muss eingegeben werden:

JA

Die Eingabe wird mit upper() in Großbuchstaben umgewandelt. Deshalb
werden beispielsweise auch diese Eingaben akzeptiert:

ja
Ja
jA

Zusätzliche Leerzeichen werden nicht automatisch entfernt.

Jede andere Eingabe bricht die Ausführung ab.

Trotz der eingebauten Schutzmaßnahmen sollte vor der Verwendung mit
wichtigen Dateien immer eine aktuelle Datensicherung vorhanden sein.

============================================================

5. Präfix auswählen
====================

In jedem Python-Script befindet sich der Abschnitt:

Gewünschte Präfixvariante auswählen

Standardmäßig ist das aktuelle Datum aktiviert:

praefix = datetime.now().strftime("%Y-%m-%d_")

Beispiel:

2026-08-12_Rechnung.pdf

Alternativ können Datum und Uhrzeit verwendet werden:

# praefix = datetime.now().strftime("%Y-%m-%d_%H-%M-%S_")

Beispiel:

2026-08-12_14-30-25_Rechnung.pdf

Oder es kann ein eigener Text eingetragen werden:

# praefix = "Ausgaben_"

Beispiel:

Ausgaben_Rechnung.pdf

Wichtig:

Immer nur EINE Präfixvariante aktiv lassen.

Eine aktive Python-Zeile beginnt direkt mit praefix.
Ein vorangestelltes # macht die Zeile zu einem Kommentar und
deaktiviert sie.

Beispiel für einen eigenen Text:

# praefix = datetime.now().strftime("%Y-%m-%d_")
# praefix = datetime.now().strftime("%Y-%m-%d_%H-%M-%S_")
praefix = "Ausgaben_"

Ein eigener Text darf keine unter Windows unzulässigen Zeichen für
Dateinamen enthalten. Dazu gehören insbesondere:

\ / : * ? " < > |

Ein leeres Präfix oder ein Präfix mit einem dieser Zeichen wird vom
Script abgelehnt.

Weitere Windows-Regeln können ebenfalls zu einem Fehler führen. Ein
Präfix sollte zum Beispiel nicht mit einem Punkt oder Leerzeichen
enden.

============================================================

6. Datums- und Zeitformate
==========================

Python formatiert Datum und Uhrzeit in diesen Scripten mit:

strftime()

Wichtige Platzhalter:

%Y    Jahr mit vier Stellen, zum Beispiel 2026
%y    Jahr mit zwei Stellen, zum Beispiel 26
%m    Monat mit zwei Stellen, zum Beispiel 08
%d    Tag mit zwei Stellen, zum Beispiel 05
%H    Stunde im 24-Stunden-Format
%I    Stunde im 12-Stunden-Format
%M    Minute mit zwei Stellen
%S    Sekunde mit zwei Stellen

Groß- und Kleinschreibung ist wichtig.

%m steht für den Monat.
%M steht für die Minute.

In Windows-Dateinamen dürfen keine Doppelpunkte verwendet werden.
Deshalb werden Stunden, Minuten und Sekunden mit Bindestrichen
getrennt:

%H-%M-%S

Beispiel:

2026-08-12_14-30-25_

============================================================

7. Variante 1: 00_Einfach
=========================

Die einfache Variante befindet sich im Ordner:

00_Einfach

Darin liegen diese Dateien:

005_dateien_mit_praefix_umbenennen.py
005_dateien_mit_praefix_umbenennen_starter_batch_test.bat

Beide Dateien werden in den Ordner kopiert, dessen direkte Dateien
umbenannt werden sollen.

Empfohlener erster Start:

005_dateien_mit_praefix_umbenennen_starter_batch_test.bat

Die Starter-Batchdatei kann per Doppelklick gestartet werden.

Das Script verarbeitet nur Dateien, die direkt im aktuellen Ordner
liegen. Unterordner und die darin enthaltenen Dateien werden nicht
verarbeitet.

Beispiel vor dem Umbenennen:

C:\Testordner\Foto.jpg
C:\Testordner\Rechnung.pdf
C:\Testordner\Tabelle.xlsx
C:\Testordner\Unterordner

Beispiel nach der echten Ausführung mit Datumspräfix:

C:\Testordner\2026-08-12_Foto.jpg
C:\Testordner\2026-08-12_Rechnung.pdf
C:\Testordner\2026-08-12_Tabelle.xlsx
C:\Testordner\Unterordner

Der Unterordner bleibt unverändert.

In dieser Variante werden außerdem bestimmte Dateien geschützt und
bewusst nicht umbenannt:

* das ausgeführte Python-Script
* die zugehörigen Starter-Batchdateien
* bereits vorhandene Umbenennungsprotokolle

Dadurch bleiben die Dateien erhalten, die zum Ausführen und
Protokollieren benötigt werden.

============================================================

8. Variante 2: 03_SendTo_Elemente_umbenennen
================================================

Diese Variante befindet sich im Ordner:

03_SendTo_Elemente_umbenennen

Darin liegen diese Dateien:

005_sendto_elemente_mit_praefix_umbenennen.py
005_sendto_elemente_mit_praefix_umbenennen_starter_batch_test.bat

Diese Variante benennt genau die Elemente um, die im
Windows-Explorer ausgewählt und über "Senden an" übergeben werden.

Mögliche Übergaben:

* eine einzelne Datei
* mehrere Dateien
* ein einzelner Ordner
* mehrere Ordner
* Dateien und Ordner gemeinsam

Bei einem ausgewählten Ordner wird nur der Ordner selbst umbenannt.
Sein Inhalt wird nicht automatisch verändert.

Beispiel:

C:\Test\Projekt
C:\Test\Dokument.pdf

Nach der echten Ausführung mit dem Präfix Ausgaben_:

C:\Test\Ausgaben_Projekt
C:\Test\Ausgaben_Dokument.pdf

Nicht vorhandene Pfade werden übersprungen.

Eine Laufwerkswurzel wie C:\ kann nicht umbenannt werden und wird
ebenfalls übersprungen.

Doppelt übergebene Pfade werden nur einmal verarbeitet.

Die geplanten Umbenennungen werden nach der Länge des Quellpfades
sortiert. Längere Pfade werden zuerst verarbeitet.

Dadurch kann zum Beispiel zuerst eine ausgewählte Datei in einem
Ordner und danach der ebenfalls ausgewählte Ordner selbst umbenannt
werden.

============================================================

9. Variante 3: 04_SendTo_Ordnerinhalt_umbenennen
==================================================

Diese Variante befindet sich im Ordner:

04_SendTo_Ordnerinhalt_umbenennen

Darin liegen diese Dateien:

005_sendto_ordnerinhalt_mit_praefix_umbenennen.py
005_sendto_ordnerinhalt_mit_praefix_umbenennen_starter_batch_test.bat

Diese Variante erwartet einen oder mehrere Ordner, die im
Windows-Explorer markiert und über "Senden an" übergeben werden.

Sie benennt ausschließlich Dateien um, die direkt in diesen Ordnern
liegen.

Die übergebenen Ordner selbst werden nicht umbenannt.

Vorhandene Unterordner werden nicht umbenannt und nicht durchsucht.

Beispiel vor dem Umbenennen:

C:\Test\Scans\Beleg1.pdf
C:\Test\Scans\Beleg2.pdf
C:\Test\Scans\Archiv\Alter_Beleg.pdf

Beispiel nach der echten Ausführung:

C:\Test\Scans\2026-08-12_Beleg1.pdf
C:\Test\Scans\2026-08-12_Beleg2.pdf
C:\Test\Scans\Archiv\Alter_Beleg.pdf

Die Datei im Unterordner Archiv bleibt unverändert.

Wird anstelle eines Ordners eine Datei übergeben, wird sie mit einer
entsprechenden Meldung übersprungen.

Bei mehreren gültigen Ordnern werden alle geplanten Umbenennungen
zuerst gesammelt. Im Echtmodus erscheint danach eine gemeinsame
Sicherheitsabfrage.

============================================================

10. SendTo-Verknüpfungen einrichten
====================================

Für beide SendTo-Varianten wird jeweils eine Verknüpfung zur
zugehörigen Starter-Batchdatei erstellt.

Vorgehensweise:

1. Die Dateien der jeweiligen SendTo-Variante gemeinsam an einem
   festen Ort speichern.

2. Eine Verknüpfung zur gewünschten Starter-Batchdatei erstellen.

3. Windows-Taste und R drücken.

4. Folgenden Befehl eingeben:

shell:sendto

5. Enter drücken.

6. Die Verknüpfung in den geöffneten SendTo-Ordner verschieben.

Danach steht die Verknüpfung im Explorer unter "Senden an" zur
Verfügung.

Es werden zwei getrennte Verknüpfungen empfohlen:

* Python 005 - Elemente mit Präfix umbenennen TEST
* Python 005 - Ordnerinhalt mit Präfix umbenennen TEST

Wichtig:

Für den Testmodus ist der Name der tatsächlichen
Starter-Batchdatei entscheidend, nicht der sichtbare Name der
Verknüpfung.

Wenn _test aus dem Namen der echten Starter-Batchdatei entfernt
wird, kann die vorhandene Verknüpfung ihr Ziel verlieren.

Dann muss entweder:

* das Ziel der Verknüpfung angepasst werden
* oder eine neue Verknüpfung erstellt werden

Die Python-Datei darf nicht umbenannt werden, weil ihr Name fest in
der Starter-Batchdatei eingetragen ist.

============================================================

11. Zusätzliche Ausgabe einstellen
===================================

In jedem Python-Script befindet sich der Abschnitt:

Welche zusätzliche Ausgabe soll erstellt werden?

Es gibt vier vorbereitete Varianten:

Variante 1: Nur Bildschirmausgabe

logdatei_erstellen = False
zwischenablage_verwenden = False

Variante 2: Logdatei erstellen

logdatei_erstellen = True
zwischenablage_verwenden = False

Variante 3: Nur in die Zwischenablage kopieren

logdatei_erstellen = False
zwischenablage_verwenden = True

Variante 4: Logdatei erstellen und in die Zwischenablage kopieren

logdatei_erstellen = True
zwischenablage_verwenden = True

Wichtig:

Immer nur die beiden Zeilen einer Variante aktiv lassen.

True schaltet die jeweilige Funktion ein.
False schaltet die jeweilige Funktion aus.

Die einfache Variante speichert eine aktivierte Logdatei im
verarbeiteten Ordner.

Die SendTo-Varianten speichern ihre Logdateien im Ordner des
jeweiligen Python-Scripts.

Die Namen der Logdateien enthalten einen Zeitstempel.

Beispiele:

umbenennprotokoll_2026-08-12_14-30-25.log
umbenennprotokoll_elemente_2026-08-12_14-30-25.log
umbenennprotokoll_ordnerinhalt_2026-08-12_14-30-25.log

Für die Zwischenablage verwendet Python das Windows-Programm:

clip

============================================================

12. Testargumente ausführlich herausfiltern
============================================

Die SendTo-Varianten übernehmen alle Startargumente ab dem zweiten
Listeneintrag:

argumente = sys.argv[1:]

Danach wird geprüft, ob --test enthalten ist:

testmodus = "--test" in argumente

Das Testargument darf später nicht wie ein Datei- oder Ordnerpfad
verarbeitet werden. Deshalb wird eine neue Liste erstellt:

argumente_ohne_test = []

for argument in argumente:
    if argument != "--test":
        argumente_ohne_test.append(argument)

argumente = argumente_ohne_test

Die Schleife übernimmt nur Einträge, die nicht --test entsprechen.

Die entsprechende kurze Python-Schreibweise wird List Comprehension
genannt:

argumente = [argument for argument in argumente if argument != "--test"]

Diese Kurzform ist im Script nur als Kommentar enthalten. Die
ausführliche Variante zeigt Schleife, Bedingung und append() für
Einsteiger deutlicher.

============================================================

13. Doppelte Pfade mit set() erkennen
======================================

Beide SendTo-Varianten verwenden:

bereits_vorhanden = set()

Ein set ist eine Menge. Jeder gespeicherte Wert kann darin nur einmal
vorkommen.

set() erzeugt ein leeres Set.

Leere geschweifte Klammern würden dagegen ein leeres Dictionary
erzeugen:

{}

Ein gefülltes Set kann mit geschweiften Klammern geschrieben werden:

{".jpg", ".png", ".pdf"}

Die alleinige Schreibweise set[] ist nicht gültig.

Eckige Klammern können bei set zum Beispiel in einer Typangabe
vorkommen:

bereits_vorhanden: set[str] = set()

Diese zusätzliche Typangabe wird für das vorliegende Script nicht
benötigt.

Ein Vergleichspfad wird mit add() im Set gespeichert:

bereits_vorhanden.add(vergleichs_pfad)

Die ursprünglichen Pfade werden zusätzlich in einer normalen Liste
gespeichert. Dadurch bleibt ihre Reihenfolge erhalten.

============================================================

14. Schutz vor mehrfachen Präfixen und Namenskonflikten
========================================================

Vor jeder geplanten Umbenennung wird geprüft, ob der Name bereits
mit dem aktuell eingestellten Präfix beginnt.

Dafür werden verwendet:

casefold()
startswith()

casefold() vereinheitlicht Text für einen Vergleich ohne Beachtung
der Groß- und Kleinschreibung.

startswith() prüft, ob der Name mit dem Präfix beginnt.

Beispiel:

if datei.name.casefold().startswith(praefix.casefold()):

Die Prüfung erkennt nur das aktuell eingestellte Präfix.

Beispiel:

Am 12.08.2026 lautet das Präfix:

2026-08-12_

Am 13.08.2026 lautet es:

2026-08-13_

Eine Datei mit dem Namen:

2026-08-12_Rechnung.pdf

beginnt am nächsten Tag nicht mit dem neuen Präfix. Bei einer
erneuten Ausführung kann deshalb dieser Name entstehen:

2026-08-13_2026-08-12_Rechnung.pdf

Das Gleiche gilt für ein Uhrzeitpräfix oder einen später geänderten
eigenen Text.

Zusätzlich wird vor jeder Umbenennung mit exists() geprüft, ob der
geplante Zielpfad bereits vorhanden ist.

Vorhandene Ziele werden nicht überschrieben.

============================================================

15. __file__ und der Scriptordner
=================================

Die Scripte verwenden an mehreren Stellen:

__file__

__file__ ist eine besondere, von Python bereitgestellte Variable.
Sie enthält den Pfad der aktuell ausgeführten Python-Datei.

Beispiel aus der einfachen Variante:

skript_pfad = Path(__file__).resolve()

Damit erkennt das Script seine eigene Python-Datei und schützt sie
vor einer Umbenennung.

Beispiel aus den SendTo-Varianten:

skript_ordner = Path(__file__).resolve().parent

Damit wird der Ordner der Python-Datei als Speicherort für eine
optionale Logdatei ermittelt.

Namen mit zwei Unterstrichen am Anfang und Ende werden häufig
Dunder-Namen genannt.

Dunder steht für:

double underscore

Weitere bekannte Beispiele sind:

__name__
__main__
__doc__
__init__

============================================================

16. Umbenennungen planen und ausführen
=======================================

Die SendTo-Varianten führen Umbenennungen nicht sofort beim Erfassen
eines Elements aus.

Stattdessen wird für jede geplante Umbenennung ein Dictionary
erstellt und der Liste plaene hinzugefügt.

Beispiel:

plaene.append(
    {
        "quelle": element,
        "alter_name": element.name,
        "neuer_name": neuer_name,
        "ziel": ziel_pfad,
    }
)

Dadurch sind Quelle, alter Name, neuer Name und Zielpfad gemeinsam
gespeichert.

Im Testmodus werden diese Pläne nur angezeigt.

Im Echtmodus werden sie nach der Sicherheitsabfrage mit rename()
ausgeführt.

Die SendTo-Elemente-Variante sortiert die Pläne zusätzlich nach der
Länge des Quellpfades:

plaene.sort(key=lambda plan: len(str(plan["quelle"])), reverse=True)

Längere und damit häufig tiefer verschachtelte Pfade werden zuerst
verarbeitet.

============================================================

17. Typische Bildschirmausgaben
===============================

WÜRDE UMBENENNEN

Diese Meldung erscheint im Testmodus.

Beispiel:

WÜRDE UMBENENNEN: "Rechnung.pdf" zu "2026-08-12_Rechnung.pdf"

Es wurde dabei nichts verändert.

UMBENANNT

Diese Meldung erscheint nach einer erfolgreichen Umbenennung im
Echtmodus.

ÜBERSPRUNGEN

Diese Meldung kann unter anderem bedeuten:

* das aktuelle Präfix ist bereits am Anfang enthalten
* der Zielpfad existiert bereits
* eine Script- oder Protokolldatei ist geschützt
* ein übergebener Pfad wurde nicht gefunden
* eine Laufwerkswurzel wurde übergeben
* die Ordnerinhalt-Variante erhielt eine Datei statt eines Ordners

FEHLER

Diese Meldung erscheint, wenn eine Datei oder ein Ordner nicht
gelesen oder umbenannt werden konnte.

Mögliche Gründe:

* fehlende Berechtigung
* Datei oder Ordner wird von einem Programm verwendet
* unzulässiger Zielname
* beschädigter oder nicht erreichbarer Pfad
* Netzwerk- oder Laufwerksproblem

============================================================

18. Warum gibt es Starter-Batchdateien?
========================================

Die Python-Logik steht in den .py-Dateien.

Die Batchdateien übernehmen den kontrollierten Start.

Das hat mehrere Vorteile:

* die passende Python-Datei wird automatisch gefunden
* der Start ist per Doppelklick möglich
* der Arbeitsordner wird richtig gesetzt
* der Testmodus kann über den Dateinamen gesteuert werden
* SendTo kann mehrere Datei- und Ordnerpfade übergeben
* Umlaute werden mit der UTF-8-Codepage besser dargestellt
* der Aufbau bleibt über die Kursteile hinweg einheitlich

Die Starterdateien verwenden standardmäßig:

py

Falls der Python Launcher auf einem System nicht verfügbar ist, ist
eine Alternative mit folgendem Befehl vorbereitet:

python

Dann müssen die passenden py-Zeilen mit REM auskommentiert und die
vorbereiteten python-Zeilen aktiviert werden.

Die Starter-Batchdatei prüft mit:

echo %~n0 | find /i "_test" >nul

ob ihr eigener Dateiname _test enthält.

Wenn _test gefunden wird, startet sie das Python-Script mit:

--test

Bei den SendTo-Varianten steht zusätzlich:

%*

Dieser Platzhalter übergibt alle vom Windows-Explorer empfangenen
Datei- und Ordnerpfade an das Python-Script.

============================================================

19. Wichtige Python-Befehle und Begriffe
=========================================

datetime.now()

Ermittelt das aktuelle lokale Datum und die aktuelle lokale Uhrzeit.

strftime()

Formatiert Datum und Uhrzeit anhand der eingetragenen Platzhalter als
Text.

sys.argv

Enthält den Namen des gestarteten Python-Scripts und alle zusätzlich
übergebenen Startargumente.

Path.cwd()

Liefert den aktuellen Arbeitsordner als Path-Objekt.

__file__

Enthält den Pfad der aktuell ausgeführten Python-Datei.

resolve()

Ermittelt einen vollständigen aufgelösten Pfad.

absolute()

Erstellt eine absolute Darstellung eines Pfades.

parent

Liefert den übergeordneten Ordner eines Pfades.

name

Liefert den letzten Namensteil eines Pfades.

iterdir()

Durchläuft die direkt enthaltenen Elemente eines Ordners.

is_file()

Prüft, ob ein Pfad eine vorhandene Datei ist.

is_dir()

Prüft, ob ein Pfad ein vorhandener Ordner ist.

exists()

Prüft, ob ein Pfad bereits vorhanden ist.

rename()

Benennt eine Datei oder einen Ordner zum angegebenen Zielpfad um.

strip()

Entfernt Leerraum am Anfang und Ende eines Textes.

lower()

Wandelt Buchstaben in Kleinbuchstaben um.

upper()

Wandelt Buchstaben in Großbuchstaben um.

casefold()

Vereinheitlicht Text besonders gründlich für Vergleiche ohne
Beachtung der Groß- und Kleinschreibung.

startswith()

Prüft, ob ein Text mit einem bestimmten Text beginnt.

append()

Fügt einer Liste einen neuen Eintrag hinzu.

set()

Erzeugt eine Menge, in der jeder Wert nur einmal vorkommt.

add()

Fügt einem Set einen Wert hinzu.

Dictionary

Speichert zusammengehörige Werte unter benannten Schlüsseln.

List Comprehension

Kurze Python-Schreibweise zum Erzeugen oder Filtern einer Liste.

lambda

Kurze anonyme Funktion, die in diesem Script den Sortierwert liefert.

sort()

Sortiert eine vorhandene Liste.

try und except

Fangen erwartbare Fehler ab und ermöglichen eine kontrollierte
Behandlung.

OSError

Basisklasse für viele typische Datei- und Betriebssystemfehler.

continue

Beendet den aktuellen Schleifendurchlauf und fährt mit dem nächsten
Element fort.

subprocess.run()

Startet ein externes Programm und kann Daten an dieses übergeben.

write_text()

Schreibt Text über ein Path-Objekt in eine Datei.

============================================================

20. Empfohlener Testablauf
==========================

1. Einen neuen Testordner anlegen.

2. Einige unwichtige Testdateien und Testordner erstellen.

3. Die gewünschte Präfixvariante im Python-Script einstellen.

4. Die Starter-Batchdatei zunächst mit _test im Namen verwenden.

5. Alle Meldungen mit WÜRDE UMBENENNEN sorgfältig prüfen.

6. Kontrollieren, ob die richtige Variante verwendet wurde:

   * 00_Einfach verarbeitet direkte Dateien im aktuellen Ordner.
   * 03_SendTo_Elemente benennt ausgewählte Elemente selbst um.
   * 04_SendTo_Ordnerinhalt benennt direkte Dateien in ausgewählten
     Ordnern um.

7. Prüfen, ob Zielnamen bereits existieren oder unerwünschte Dateien
   betroffen wären.

8. Erst danach _test aus dem Namen der passenden
   Starter-Batchdatei entfernen.

9. Falls eine SendTo-Verknüpfung verwendet wird, ihr Ziel nach der
   Umbenennung der Batchdatei prüfen oder die Verknüpfung neu
   erstellen.

10. Die echte Ausführung erneut mit unwichtigen Testdaten testen.

11. Vor der späteren Verwendung mit wichtigen Daten eine aktuelle
    Datensicherung erstellen.

============================================================

21. Wichtige Grenzen dieser Version
====================================

Diese Version wurde bewusst übersichtlich und einsteigerfreundlich
gehalten.

Die Scripte bieten absichtlich:

* keine Rückgängig-Funktion
* kein automatisches Entfernen vorhandener älterer Präfixe
* kein Überschreiben bestehender Zielnamen
* keine rekursive Verarbeitung von Unterordnern
* keine automatische Sicherung der umzubenennenden Dateien
* keine Filterung nach Dateiendung, Größe oder Datum

Das Script prüft die wichtigsten unter Windows unzulässigen Zeichen
im Präfix. Weitere Regeln des Dateisystems können dennoch dazu
führen, dass ein Name beim Umbenennen abgelehnt wird. Ein solcher
Fehler wird abgefangen und ausgegeben.

Eine Umbenennung verändert normalerweise nicht den Inhalt einer
Datei. Programme, Verknüpfungen oder Projekte können jedoch auf feste
Datei- oder Ordnernamen angewiesen sein. Das Umbenennen kann solche
Verknüpfungen ungültig machen.

============================================================

22. Haftungsausschluss
======================

Die Scripte werden zu Lern- und Demonstrationszwecken bereitgestellt.

Die Verwendung erfolgt auf eigene Verantwortung.

Bitte alle Scripte zuerst mit unwichtigen Testdaten prüfen und vor
der Bearbeitung wichtiger Dateien eine vollständige Datensicherung
erstellen.

Für Datenverluste, fehlerhafte Umbenennungen, unterbrochene
Verknüpfungen oder sonstige Schäden wird keine Haftung übernommen.

============================================================

23. Weitere Informationen
==========================

YouTube-Kanal:
https://www.youtube.com/@TOPTORIALS-OFFICE

Webseite:
https://www.toptorials.com

Auf dem YouTube-Kanal und auf der Webseite gibt es weitere Tutorials
zu Python, PowerShell 7, Batch, Excel und Windows-Automatisierung.

============================================================

Viel Erfolg beim Ausprobieren!

TOPTORIALS OFFICE
