TOPTORIALS OFFICE - PowerShell 7 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-10

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

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

Diese Scripte benennen Dateien und Ordner mit PowerShell 7 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-10_Rechnung.pdf

Foto.jpg
2026-08-10_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
* PowerShell 7
* Schreibberechtigung für die zu bearbeitenden Dateien und Ordner

PowerShell 7 kann beispielsweise mit winget installiert werden:

winget install --id Microsoft.PowerShell --source winget

Nach der Installation sollte die Eingabeaufforderung neu gestartet
werden.

Mit folgendem Befehl kann geprüft werden, ob PowerShell 7 verfügbar
ist:

pwsh --version

Die Starter-Batchdateien verwenden den Befehl:

pwsh

Damit wird gezielt PowerShell 7 und nicht die ältere Windows
PowerShell 5.1 gestartet.

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

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

00_Einfach
005_dateien_mit_praefix_umbenennen.ps1
005_dateien_mit_praefix_umbenennen_starter_batch_test.bat

03_SendTo_Elemente_umbenennen
005_sendto_elemente_mit_praefix_umbenennen.ps1
005_sendto_elemente_mit_praefix_umbenennen_starter_batch_test.bat

04_SendTo_Ordnerinhalt_umbenennen
005_sendto_ordnerinhalt_mit_praefix_umbenennen.ps1
005_sendto_ordnerinhalt_mit_praefix_umbenennen_starter_batch_test.bat

Die Dateien mit der Endung .ps1 enthalten die eigentliche
PowerShell-Logik.

Die Dateien mit der Endung .bat starten die passenden
PowerShell-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
PowerShell-Script mit dem Schalter -Test gestartet.

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

Groß- und Kleinschreibung wird bei dieser Prüfung von PowerShell
standardmäßig ignoriert. Deshalb werden beispielsweise auch diese
Eingaben akzeptiert:

ja
Ja
jA

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 PowerShell-Script befindet sich der Abschnitt:

Gewünschte Präfixvariante auswählen

Standardmäßig ist das aktuelle Datum aktiviert:

$praefix = Get-Date -Format "yyyy-MM-dd_"

Beispiel:

2026-08-10_Rechnung.pdf

Alternativ können Datum und Uhrzeit verwendet werden:

# $praefix = Get-Date -Format "yyyy-MM-dd_HH-mm-ss_"

Beispiel:

2026-08-10_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 PowerShell-Zeile beginnt direkt mit $praefix.
Ein vorangestelltes # macht die Zeile zu einem Kommentar und
deaktiviert sie.

Beispiel für einen eigenen Text:

# $praefix = Get-Date -Format "yyyy-MM-dd_"
# $praefix = Get-Date -Format "yyyy-MM-dd_HH-mm-ss_"
$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 ungültigen Zeichen wird vom
Script abgelehnt.

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

6. Variante 1: 00_Einfach
=========================

Die einfache Variante befindet sich im Ordner:

00_Einfach

Darin liegen diese Dateien:

005_dateien_mit_praefix_umbenennen.ps1
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-10_Foto.jpg
C:\Testordner\2026-08-10_Rechnung.pdf
C:\Testordner\2026-08-10_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 PowerShell-Script
* die zugehörigen Starter-Batchdateien
* bereits vorhandene Umbenennungsprotokolle

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

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

7. Variante 2: 03_SendTo_Elemente_umbenennen
============================================

Diese SendTo-Variante befindet sich im Ordner:

03_SendTo_Elemente_umbenennen

Darin liegen diese Dateien:

005_sendto_elemente_mit_praefix_umbenennen.ps1
005_sendto_elemente_mit_praefix_umbenennen_starter_batch_test.bat

Diese Variante benennt die über "Senden an" ausgewählten Elemente
selbst um.

Es können ausgewählt werden:

* einzelne Dateien
* mehrere Dateien
* einzelne Ordner
* mehrere Ordner
* Dateien und Ordner gemeinsam

Beispielauswahl:

C:\Test\Foto.jpg
C:\Test\Rechnung.pdf
C:\Test\Projektordner

Ergebnis mit Datumspräfix:

C:\Test\2026-08-10_Foto.jpg
C:\Test\2026-08-10_Rechnung.pdf
C:\Test\2026-08-10_Projektordner

Wichtig:

Wird ein Ordner an diese Variante gesendet, wird der Ordner selbst
umbenannt. Seine enthaltenen Dateien und Unterordner behalten ihre
Namen.

Die Umbenennungen werden zunächst vollständig geplant und geprüft.
Erst danach folgt im Echtmodus eine gemeinsame Sicherheitsabfrage.

Wenn gleichzeitig verschachtelte Elemente übergeben werden, werden
Elemente mit längeren Pfaden zuerst verarbeitet. Dadurch können
untergeordnete Elemente kontrollierter vor ihren übergeordneten
Ordnern umbenannt werden.

Eine Laufwerkswurzel wie C:\ wird aus Sicherheitsgründen nicht
umbenannt.

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

8. Variante 3: 04_SendTo_Ordnerinhalt_umbenennen
================================================

Diese SendTo-Variante befindet sich im Ordner:

04_SendTo_Ordnerinhalt_umbenennen

Darin liegen diese Dateien:

005_sendto_ordnerinhalt_mit_praefix_umbenennen.ps1
005_sendto_ordnerinhalt_mit_praefix_umbenennen_starter_batch_test.bat

Diese Variante erhält einen oder mehrere Ordner über "Senden an".
Sie benennt nicht die ausgewählten Ordner selbst um, sondern deren
direkt enthaltene Dateien.

Beispiel vor dem Umbenennen:

C:\Test\Rechnungen\Januar.pdf
C:\Test\Rechnungen\Februar.pdf
C:\Test\Rechnungen\Archiv\Maerz.pdf

Wird der Ordner C:\Test\Rechnungen übergeben, entsteht mit einem
Datumspräfix folgendes Ergebnis:

C:\Test\Rechnungen\2026-08-10_Januar.pdf
C:\Test\Rechnungen\2026-08-10_Februar.pdf
C:\Test\Rechnungen\Archiv\Maerz.pdf

Der Ordner Rechnungen wird nicht umbenannt.
Der Unterordner Archiv wird nicht umbenannt.
Die Datei Maerz.pdf im Unterordner Archiv wird nicht verarbeitet.

Diese Variante arbeitet absichtlich nicht rekursiv. Es werden nur
Dateien berücksichtigt, die direkt in den übergebenen Ordnern
liegen.

Werden statt Ordnern einzelne Dateien an diese Variante gesendet,
werden diese als ungültige Übergaben übersprungen.

Wichtig:

In dieser Variante werden alle direkten Dateien der ausgewählten
Ordner berücksichtigt. Befinden sich dort Scripte, Batchdateien oder
andere wichtige Dateien, würden auch diese umbenannt. Deshalb sollte
die Auswahl zuerst immer im Testmodus geprüft werden.

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

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

Für die beiden SendTo-Varianten sollte jeweils eine Verknüpfung zur
passenden Starter-Batchdatei im SendTo-Ordner von Windows angelegt
werden.

Den SendTo-Ordner öffnen:

1. Windows-Taste und R drücken
2. shell:sendto eingeben
3. Enter drücken

In diesem Ordner werden Verknüpfungen zu folgenden Dateien angelegt:

005_sendto_elemente_mit_praefix_umbenennen_starter_batch_test.bat

005_sendto_ordnerinhalt_mit_praefix_umbenennen_starter_batch_test.bat

Die Verknüpfungen können verständliche Namen erhalten, zum Beispiel:

TEST - Elemente mit Präfix umbenennen

TEST - Dateien im Ordner mit Präfix umbenennen

Danach erscheinen sie im Windows-Explorer unter:

Rechtsklick auf markierte Elemente
Senden an

Wichtig:

Die eigentlichen PowerShell- und Batchdateien sollten an ihrem
festen Speicherort zusammenbleiben. In den SendTo-Ordner gehören nur
die Verknüpfungen zur jeweiligen Starter-Batchdatei.

Nach dem Test kann _test aus dem Namen der echten
Starter-Batchdatei entfernt werden. Anschließend sollte die
SendTo-Verknüpfung geprüft oder bei Bedarf neu erstellt werden.

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

10. Zusätzliche Ausgabe einstellen
==================================

Standardmäßig wird nur eine Bildschirmausgabe erstellt:

$logDateiErstellen = $false
$zwischenablageVerwenden = $false

Alternativ stehen vier Ausgabemöglichkeiten zur Verfügung:

Variante 1: Nur Bildschirmausgabe

$logDateiErstellen = $false
$zwischenablageVerwenden = $false

Variante 2: Logdatei erstellen

$logDateiErstellen = $true
$zwischenablageVerwenden = $false

Variante 3: Nur in die Zwischenablage kopieren

$logDateiErstellen = $false
$zwischenablageVerwenden = $true

Variante 4: Logdatei und Zwischenablage verwenden

$logDateiErstellen = $true
$zwischenablageVerwenden = $true

Auch hier sollte nur die gewünschte Kombination aktiv sein.

Die Logdateien erhalten einen Zeitstempel, damit vorhandene
Protokolle nicht überschrieben werden.

Beispiele:

umbenennprotokoll_2026-08-10_14-30-25.log

umbenennprotokoll_elemente_2026-08-10_14-30-25.log

umbenennprotokoll_ordnerinhalt_2026-08-10_14-30-25.log

Bei der einfachen Variante wird das Protokoll im bearbeiteten Ordner
gespeichert.

Bei den beiden SendTo-Varianten wird das Protokoll im Ordner des
jeweiligen PowerShell-Scripts gespeichert.

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

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

Beginnt ein Name bereits mit dem aktuell eingestellten Präfix, wird
das Element übersprungen.

Beispiel bei aktivem Präfix 2026-08-10_:

2026-08-10_Rechnung.pdf

Diese Datei erhält das gleiche Präfix nicht erneut.

Wichtig bei Datums- und Uhrzeitpräfixen:

Das Script erkennt nur das Präfix, das beim aktuellen Start erzeugt
wurde. Eine Datei mit einem älteren Datum beginnt nicht mit dem
aktuellen Präfix und könnte deshalb ein weiteres Präfix erhalten.

Beispiel:

2026-08-09_Rechnung.pdf

kann bei einem Lauf am folgenden Tag zu diesem Namen werden:

2026-08-10_2026-08-09_Rechnung.pdf

Deshalb sollte vor jeder echten Ausführung die Testausgabe geprüft
werden.

Existiert der geplante Zielname bereits, wird das betreffende Element
nicht überschrieben, sondern übersprungen.

Beispiel:

Rechnung.pdf
2026-08-10_Rechnung.pdf

Wenn das Datumspräfix 2026-08-10_ verwendet wird, bleibt
Rechnung.pdf unverändert, weil der Zielname bereits vorhanden ist.

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

12. Typische Bildschirmausgaben
===============================

Im Testmodus:

WÜRDE UMBENENNEN

Das Element wurde nur geprüft. Es wurde nicht verändert.

Im Echtmodus:

UMBENANNT

Das Element wurde erfolgreich umbenannt.

Bei einer Schutzprüfung:

ÜBERSPRUNGEN

Das Element wurde absichtlich nicht verändert. Mögliche Gründe sind:

* das Präfix ist bereits vorhanden
* der Zielname existiert bereits
* ein Pfad wurde nicht gefunden
* eine Laufwerkswurzel wurde übergeben
* eine Datei wurde an die Ordnerinhalt-Variante gesendet
* eine Script- oder Protokolldatei ist geschützt

Bei einem technischen Problem:

FEHLER

Mögliche Ursachen sind beispielsweise:

* fehlende Zugriffsrechte
* eine Datei wird von einem anderen Programm verwendet
* ein Ordner oder eine Datei wurde zwischenzeitlich verschoben
* der Pfad ist nicht mehr verfügbar

Am Ende zeigt jedes Script eine Zusammenfassung mit der Anzahl der
geplanten beziehungsweise ausgeführten Umbenennungen, der
übersprungenen Elemente und der Fehler.

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

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

Die eigentliche Logik steht in den PowerShell-Dateien mit der Endung
.ps1.

Die Batchdateien erleichtern den Start per Doppelklick und übernehmen
mehrere vorbereitende Aufgaben:

* UTF-8-Ausgabe mit chcp 65001
* Wechsel in den Ordner der Starter-Batchdatei
* Start über PowerShell 7 mit pwsh
* Erkennung des Testmodus über _test im eigenen Dateinamen
* Übergabe von Dateien und Ordnern bei den SendTo-Varianten

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 PowerShell-Script mit:

-Test

Bei den SendTo-Varianten steht zusätzlich:

%*

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

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

14. Wichtige PowerShell-Befehle und Begriffe
============================================

Get-Date

Ermittelt das aktuelle Datum und die aktuelle Uhrzeit. Mit -Format
wird festgelegt, wie daraus das Präfix gebildet wird.

Get-Location

Liefert den aktuellen Arbeitsordner. Die einfache Variante verwendet
diesen Ordner als Basisordner.

Get-ChildItem

Liest Dateien aus einem Ordner aus. Mit -File werden nur Dateien und
keine Unterordner zurückgegeben.

Get-Item

Liest ein einzelnes übergebenes Element als Datei- oder Ordnerobjekt
ein.

Test-Path

Prüft, ob ein Pfad oder geplanter Zielname bereits existiert.

Split-Path

Ermittelt bei der SendTo-Elemente-Variante aus einem vollständigen
Pfad den übergeordneten Ordner. -LiteralPath sorgt dafür, dass
Sonderzeichen im Pfad nicht als Platzhalter interpretiert werden.

Join-Path

Verbindet einen Ordnerpfad mit dem neu gebildeten Namen zu einem
vollständigen Zielpfad.

StartsWith()

Prüft, ob ein Datei- oder Ordnername bereits mit dem aktuellen Präfix
beginnt. Groß- und Kleinschreibung wird dabei ignoriert.

Rename-Item

Benennt im Echtmodus die Datei oder den Ordner um.

PSCustomObject

Speichert eine geplante Umbenennung mit Quelle, altem Namen, neuem
Namen und Zielpfad. Dadurch können die SendTo-Varianten alle
Änderungen zuerst planen und danach gesammelt ausführen.

try und catch

Fangen Fehler kontrolliert ab. Das Script kann dadurch eine
verständliche Fehlermeldung ausgeben und weitere Elemente
verarbeiten.

Set-Content

Schreibt das optionale Protokoll als UTF-8-Text in eine Logdatei.

Set-Clipboard

Kopiert das optionale Protokoll in die Windows-Zwischenablage.

continue

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

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

15. Empfohlener Testablauf
==========================

1. Einen neuen Testordner anlegen.

2. Einige unwichtige Testdateien und Testordner erstellen.

3. Die gewünschte Präfixvariante im PowerShell-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. Die echte Ausführung erneut mit unwichtigen Testdaten testen.

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

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

16. 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

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.

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

17. 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.

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

18. 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 PowerShell 7, Batch, Python, Excel und Windows-Automatisierung.

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

Viel Erfolg beim Ausprobieren!

TOPTORIALS OFFICE
