============================================================
TOPTORIALS OFFICE - PowerShell 7 Grundkurs
Teil 009: Projektordner mit Datum und Logdatei sichern
============================================================

Autor: Chris
Webseite: https://www.toptorials.com
YouTube: https://www.youtube.com/@TOPTORIALS-OFFICE
Skriptversion: Grundkurs 1.0
Stand dieser Anleitung: 06.09.2026


WICHTIG VOR DEM ERSTEN START
============================================================

Bitte zuerst mit Kopien unwichtiger Projektdateien arbeiten.

Für den Testmodus muss _test im tatsächlichen Dateinamen der
Starter-Batchdatei stehen. Der Hinweis im Kommentar der Datei
oder der Anzeigename einer Verknüpfung genügt dafür nicht.

Im Fenster muss stehen:

Testmodus: JA

Im Testmodus erhält robocopy den Schalter /L. Dadurch wird nur
angezeigt, was kopiert würde. Es werden keine Backupordner und
keine Protokolldateien angelegt.

Ohne _test wird der Echtmodus gestartet. Der Backupordner wird
erst nach der Sicherheitsabfrage und der exakten Eingabe JA
angelegt.

Die Skripte verwenden bewusst NICHT den robocopy-Schalter /MIR.
Es werden daher keine Dateien durch eine Spiegelungsfunktion
aus dem Ziel gelöscht.

Trotzdem ersetzen diese Lernskripte keine vollständige,
zusätzlich geprüfte und räumlich getrennte Datensicherung.


INHALT
============================================================

01. Worum geht es?
02. Voraussetzungen
03. Ordner und Dateien
04. Schnellstart: normale Variante
05. SendTo-Variante einrichten und verwenden
06. Testmodus und Echtmodus
07. Speicherorte und Zeitstempel
08. Ordner- und Dateiausschlüsse
09. Verwendete robocopy-Schalter
10. Ablauf und Bildschirmausgabe
11. robocopy-Rückgabecodes
12. Aufgaben der Starter-Batchdateien
13. Direkter Aufruf mit PowerShell 7
14. Häufige Fragen und Fehler
15. Grenzen und Sicherheit
16. Kurze Zusammenfassung


01. WORUM GEHT ES?
============================================================

Mit diesen Skripten könnt ihr vollständige Projektordner in
einen neuen, datierten Backupordner kopieren.

Beispiel:

Quellordner:

C:\Projekte\MeinProjekt

Erzeugter Backupordner:

C:\Projekte\MeinProjekt\Backups\Backup_2026-09-06_20-15-30

Protokolldatei:

backup_protokoll_2026-09-06_20-15-30.log

Die Dateien und Unterordner des Projekts werden mit robocopy
in den neuen Backupordner kopiert. Leere Unterordner werden
dabei ebenfalls berücksichtigt.

Es gibt zwei Varianten:

- 02_Projektordner_sichern_mit_Log:
  Sichert den Ordner, in dem das PowerShell-Skript liegt.

- 03_SendTo_Projektordner_sichern_mit_Log:
  Sichert einen oder mehrere Projektordner, die über das
  Windows-Menü "Senden an" übergeben wurden.

In jedem Projektordner entsteht ein eigener Unterordner mit
dem Namen Backups. Der Backup-Hauptordner selbst wird von der
Quelle ausgeschlossen, damit vorhandene Sicherungen nicht
erneut in ein späteres Backup kopiert werden.

Im Echtmodus schreibt robocopy seine Ausgabe zusätzlich in
eine eigene Protokolldatei im jeweiligen Backupordner.


02. VORAUSSETZUNGEN
============================================================

- Windows mit dem Systemprogramm robocopy.exe.
- Installiertes PowerShell 7.
- PowerShell 7 muss über den Befehl pwsh erreichbar sein.
- Ausreichende Lese- und Schreibrechte in den Projektordnern.
- Genügend freier Speicherplatz für die Sicherungen.
- PowerShell-Skript und passender Starter liegen jeweils
  gemeinsam in ihrem Kursordner.

Mit diesem Befehl könnt ihr PowerShell 7 prüfen:

pwsh --version

Die Skripte benötigen mindestens PowerShell 7.0.
Windows PowerShell 5.1 beziehungsweise powershell.exe ist
für diese Skripte kein gleichwertiger Ersatz.

robocopy gehört zu Windows. Das PowerShell-Skript prüft vor
dem Sicherungslauf, ob robocopy.exe gefunden werden kann.


03. ORDNER UND DATEIEN
============================================================

Der vorgesehene Hauptordner lautet:

C:\TOPTORIALS_CODE\010_PowerShell_7_Grundkurs\009_Backup_mit_Datum

Diese README.txt kann im Hauptordner liegen.


Variante 1: normaler Projektordner
------------------------------------------------------------

Unterordner:

02_Projektordner_sichern_mit_Log

PowerShell-Datei:

009_Backup_mit_Datum_mit_Log.ps1

Starter für den Testmodus:

009_backup_mit_datum_mit_log_starter_batch_test.bat

Startername für den Echtmodus:

009_backup_mit_datum_mit_log_starter_batch.bat


Variante 2: SendTo
------------------------------------------------------------

Unterordner:

03_SendTo_Projektordner_sichern_mit_Log

PowerShell-Datei:

009_SendTo_Backup_mit_Datum_mit_Log.ps1

Starter für den Testmodus:

009_sendto_backup_mit_datum_mit_log_starter_batch_test.bat

Startername für den Echtmodus:

009_sendto_backup_mit_datum_mit_log_starter_batch.bat


Hinweise zu den Dateinamen
------------------------------------------------------------

Die beiden genannten Starternamen pro Variante bezeichnen
denselben Starter vor beziehungsweise nach dem Umbenennen.
Es werden nicht zwingend zwei getrennte Starter benötigt.

Für den ersten Probelauf muss _test im tatsächlichen Namen
der Starter-Batchdatei stehen.

Die PowerShell-Dateinamen müssen exakt zu den Namen passen,
die im jeweiligen Starter hinter -File stehen.

Zusätze wie (1) oder (2), die beispielsweise beim erneuten
Herunterladen entstehen können, gehören nicht zu den oben
genannten Skriptnamen.


04. SCHNELLSTART: NORMALE VARIANTE
============================================================

1. Legt einen Projektordner mit Kopien unwichtiger Dateien
   und einigen Test-Unterordnern an.

2. Kopiert das PowerShell-Skript der normalen Variante und
   seine Starter-Batchdatei gemeinsam in diesen Projektordner.

3. Prüft den Namen der Starter-Batchdatei. Für den Testlauf:

   009_backup_mit_datum_mit_log_starter_batch_test.bat

4. Startet diese Batchdatei per Doppelklick.

5. Prüft im Fenster:

   Testmodus: JA

6. Kontrolliert die angezeigten Pfade:

   Quellordner
   Backup-Hauptordner
   Neuer Backupordner
   Protokolldatei

7. Prüft anschließend die Dateiliste von robocopy.

8. Im Testmodus dürfen weder der Ordner Backups noch eine
   Protokolldatei angelegt werden.

9. Wenn die Vorschau stimmt, entfernt _test aus dem Namen
   einer Kopie der Starter-Batchdatei:

   009_backup_mit_datum_mit_log_starter_batch.bat

10. Startet den Echtmodus erneut.

11. Kontrolliert die angezeigten Pfade noch einmal.

12. Bestätigt den Sicherungslauf nur bei korrekten Angaben
    mit der exakt großgeschriebenen Eingabe:

    JA

13. Prüft nach dem Lauf den neuen Backupordner und die darin
    angelegte Protokolldatei.

Wichtig:
Die normale Variante sichert immer den Ordner des zugehörigen
PowerShell-Skripts. Dafür verwendet sie $PSScriptRoot.

Die README.txt sollte deshalb im Hauptordner des Kurspakets
bleiben. Sie muss für diese Variante nicht in den zu sichernden
Projektordner kopiert werden.


05. SENDTO-VARIANTE EINRICHTEN UND VERWENDEN
============================================================

Bei SendTo bleiben PowerShell-Skript und Starter gemeinsam
an ihrem festen Speicherort:

C:\TOPTORIALS_CODE\010_PowerShell_7_Grundkurs\009_Backup_mit_Datum\03_SendTo_Projektordner_sichern_mit_Log


Verknüpfung einrichten
------------------------------------------------------------

1. Prüft, dass der Original-Starter für den Probelauf so heißt:

   009_sendto_backup_mit_datum_mit_log_starter_batch_test.bat

2. Drückt Windows + R.

3. Gebt Folgendes ein:

   shell:sendto

4. Bestätigt mit Enter.

5. Legt in dem geöffneten SendTo-Ordner eine Verknüpfung zur
   Starter-Batchdatei an.

6. Die Original-Batchdatei und das PowerShell-Skript bleiben
   gemeinsam im oben genannten Kursordner.

7. Gebt der Verknüpfung einen verständlichen Namen, etwa:

   Projektordner sichern - TEST

Wichtig:
Kopiert nicht nur die Starter-Batchdatei in den SendTo-Ordner.
Sie würde dort nach der PowerShell-Datei im falschen Ordner
suchen und könnte das Skript deshalb nicht finden.


SendTo verwenden
------------------------------------------------------------

1. Markiert im Windows-Explorer einen oder mehrere Ordner.

2. Wählt im Kontextmenü "Senden an" und anschließend eure
   eingerichtete Test-Verknüpfung.

3. Prüft im Fenster die Anzeige:

   Testmodus: JA

4. Kontrolliert für jeden Plan die angezeigten Werte:

   Quelle
   Ziel
   Protokoll

5. Prüft anschließend für jeden Ordner die Ausgabe von
   robocopy.

Direkt übergebene Dateien werden übersprungen. Diese Variante
verarbeitet ausschließlich vorhandene Ordner.

Wird derselbe Ordner mehrfach übergeben, nimmt das Skript
seinen vollständigen Pfad nur einmal in die Liste auf.

Alle gültigen Projektordner desselben Durchlaufs erhalten den
gleichen Zeitstempel. Jeder Ordner besitzt aber seinen eigenen
Backup-Hauptordner und seine eigene Protokolldatei.


Auf Echtmodus umstellen
------------------------------------------------------------

Entfernt _test aus dem Namen einer Kopie der ORIGINAL-
Starter-Batchdatei:

009_sendto_backup_mit_datum_mit_log_starter_batch.bat

Erstellt anschließend eine neue SendTo-Verknüpfung zu diesem
Echtmodus-Starter oder aktualisiert das Ziel einer bestehenden
Verknüpfung.

Der Anzeigename der Verknüpfung steuert den Testmodus NICHT.
Entscheidend ist der tatsächliche Name der Batchdatei, auf die
die Verknüpfung verweist.

Nach dem erneuten Aufruf erscheint "Testmodus: NEIN".
Die Backups werden erst nach der exakten Eingabe JA erstellt.


06. TESTMODUS UND ECHTMODUS
============================================================

Testmodus:
------------------------------------------------------------

- _test steht im Namen des Starters.
- Der Starter übergibt -Test an PowerShell.
- Das Skript zeigt "Testmodus: JA".
- Alle Quell-, Ziel- und Protokollpfade werden angezeigt.
- robocopy erhält den Schalter /L.
- Die vorgesehenen Kopiervorgänge werden nur aufgelistet.
- Es entstehen keine Backupordner.
- Es entstehen keine Protokolldateien.


Echtmodus:
------------------------------------------------------------

- _test fehlt im Namen des Starters.
- Der Starter übergibt keinen -Test-Schalter.
- Das Skript zeigt "Testmodus: NEIN".
- Alle geplanten Backupziele werden angezeigt.
- Vor der Ausführung erscheint eine Sicherheitsabfrage.
- Nur die exakt geschriebene Eingabe JA wird akzeptiert.
- Erst danach werden die Zielordner angelegt.
- robocopy kopiert die Daten und schreibt das Protokoll.

Die getestete Skriptversion unterscheidet bei der Bestätigung
zwischen Groß- und Kleinschreibung. Folgende Eingabe ist richtig:

JA

Diese Varianten werden nicht akzeptiert:

ja
Ja
jA

Eine andere oder leere Eingabe bricht vor dem Anlegen des
Backupordners ab.


07. SPEICHERORTE UND ZEITSTEMPEL
============================================================

Der gemeinsame Name des Backup-Hauptordners lautet:

Backups

Der Zeitstempel wird mit diesem Format erstellt:

yyyy-MM-dd_HH-mm-ss

Ein möglicher Wert lautet:

2026-09-06_20-15-30

Daraus bildet das Skript beispielsweise:

Backup_2026-09-06_20-15-30

und:

backup_protokoll_2026-09-06_20-15-30.log


Normale Variante
------------------------------------------------------------

Quelle:
Ordner des PowerShell-Skripts.

Backup-Hauptordner:

<Skriptordner>\Backups

Ziel:

<Skriptordner>\Backups\Backup_<Zeitstempel>


SendTo-Variante
------------------------------------------------------------

Quelle:
Der jeweils im Explorer ausgewählte Projektordner.

Backup-Hauptordner:

<Ausgewählter Projektordner>\Backups

Ziel:

<Ausgewählter Projektordner>\Backups\Backup_<Zeitstempel>

Der Speicherort des SendTo-Skripts wird bei dieser Variante
nicht als Backupquelle verwendet.


08. ORDNER- UND DATEIAUSSCHLÜSSE
============================================================

Vorbereitete ausgeschlossene Ordnernamen:

Temp
Cache
Alte Dateien

Zusätzlich wird der vollständige Pfad des jeweiligen Ordners
Backups ausgeschlossen.

Das ist erforderlich, weil der neue Backupordner innerhalb
der Quelle liegt. Durch den Ausschluss werden bereits vorhandene
Backups nicht erneut mitkopiert.

Vorbereitete ausgeschlossene Dateien und Dateimuster:

desktop.ini
thumbs.db
*.tmp
*.log
*.bak

Die Muster *.tmp, *.log und *.bak schließen alle passenden
Quelldateien unabhängig von ihrem eigentlichen Basisnamen aus.

Die von robocopy selbst erzeugte Protokolldatei liegt im neuen
Zielordner. Sie ist keine aus der Quelle kopierte Logdatei.

Die Ausschlusslisten können am Anfang beider PowerShell-
Skripte angepasst oder erweitert werden.


09. VERWENDETE ROBOCOPY-SCHALTER
============================================================

/E
------------------------------------------------------------

Kopiert Unterordner einschließlich leerer Unterordner.


/L
------------------------------------------------------------

Listet im Testmodus nur auf, was kopiert würde.
Die Kopiervorgänge werden nicht ausgeführt.


/XJ
------------------------------------------------------------

Schließt Verzeichnisverknüpfungen beziehungsweise Junction
Points aus. Dadurch folgt robocopy diesen Verknüpfungen nicht.


/R:1
------------------------------------------------------------

Bei einem fehlgeschlagenen Kopierversuch erfolgt höchstens
ein weiterer Versuch.


/W:1
------------------------------------------------------------

Vor dem erneuten Versuch wartet robocopy eine Sekunde.


/XD
------------------------------------------------------------

Schließt die danach übergebenen Verzeichnisse aus.
Danach folgen der vollständige Backup-Pfad und die Einträge
aus $ausgeschlosseneOrdner.


/XF
------------------------------------------------------------

Schließt die danach übergebenen Dateien und Dateimuster aus.
Danach folgen die Einträge aus $ausgeschlosseneDateien.


/TEE
------------------------------------------------------------

Zeigt die Ausgabe im Konsolenfenster an und leitet sie auch
an die Protokollierung weiter.


/UNILOG
------------------------------------------------------------

Schreibt die robocopy-Ausgabe in eine Unicode-Logdatei.
Jeder echte Sicherungslauf erhält einen eigenen Logpfad.


Warum fehlt /MIR?
------------------------------------------------------------

/MIR spiegelt Quelle und Ziel. Dabei können Elemente im Ziel
gelöscht werden, wenn sie nicht mehr in der Quelle vorhanden
sind.

Unsere Skripte erstellen für jeden Lauf einen neuen datierten
Backupordner. Eine Spiegelungs- und Löschfunktion ist dafür
nicht erforderlich. Deshalb wird /MIR bewusst nicht verwendet.


10. ABLAUF UND BILDSCHIRMAUSGABE
============================================================

Normale Variante:

1. Zeitstempel und alle Pfade vorbereiten.
2. Verfügbarkeit von robocopy.exe prüfen.
3. Quell-, Ziel- und Ausschlussinformationen anzeigen.
4. Im Echtmodus die Eingabe JA abfragen.
5. Erst danach den Zielordner anlegen.
6. robocopy-Argumentliste zusammenstellen.
7. robocopy starten.
8. Rückgabecode auswerten.
9. Abschlussmeldung anzeigen.


SendTo-Variante:

1. Übergebene Pfade prüfen.
2. Nur vorhandene Ordner übernehmen.
3. Doppelte Ordnerpfade vermeiden.
4. Für jeden Quellordner einen Backupplan erstellen.
5. Alle Quellen, Ziele und Protokollpfade anzeigen.
6. Im Echtmodus einmal gemeinsam nach JA fragen.
7. Die Sicherungspläne nacheinander ausführen.
8. Jeden robocopy-Rückgabecode auswerten.
9. Erfolgreiche und fehlgeschlagene Läufe zusammenfassen.


Beispiel für die normale Anzeige:
------------------------------------------------------------

Quellordner:           C:\Projekte\MeinProjekt
Backup-Hauptordner:    C:\Projekte\MeinProjekt\Backups
Neuer Backupordner:    C:\Projekte\MeinProjekt\Backups\Backup_2026-09-06_20-15-30
Protokolldatei:        C:\Projekte\MeinProjekt\Backups\Backup_2026-09-06_20-15-30\backup_protokoll_2026-09-06_20-15-30.log
Testmodus:              JA


Beispiel für die SendTo-Zusammenfassung:
------------------------------------------------------------

Zusammenfassung
---------------
Erfolgreich:    2
Fehlgeschlagen: 0

Im Testmodus bedeutet "Erfolgreich", dass robocopy die
Vorschau für diesen Ordner ohne schwerwiegenden Fehler
abschließen konnte. Es wurden trotzdem keine Dateien kopiert.


11. ROBOCOPY-RÜCKGABECODES
============================================================

robocopy verwendet andere Rückgabecodes als viele normale
Programme. Ein Wert größer als null ist deshalb nicht sofort
ein Fehler.

Vereinfachte Bedeutung:

0
Keine Dateien mussten kopiert werden und es wurden keine
Unterschiede oder Fehler gemeldet.

1
Dateien wurden erfolgreich kopiert.

2
Zusätzliche Dateien oder Ordner wurden im Ziel erkannt.
Es trat kein Kopierfehler auf.

3
Dateien wurden kopiert und zusätzliche Elemente erkannt.

4
Nicht übereinstimmende Dateien oder Ordner wurden erkannt.
Es trat noch kein schwerwiegender Kopierfehler auf.

5
Dateien wurden kopiert und Abweichungen erkannt.

6
Zusätzliche Elemente und Abweichungen wurden erkannt.

7
Dateien wurden kopiert sowie zusätzliche Elemente und
Abweichungen erkannt.

8 oder höher
Mindestens ein Kopierfehler ist aufgetreten.

Die PowerShell-Skripte prüfen deshalb:

$robocopyCode -ge 8

Nur bei einem Wert ab 8 wird der Sicherungslauf als
fehlgeschlagen behandelt.

Auch ein Testlauf mit /L kann beispielsweise den Rückgabecode
1 liefern, weil robocopy Dateien erkannt hat, die bei einem
echten Lauf kopiert würden. Das ist kein Kopierfehler.


12. AUFGABEN DER STARTER-BATCHDATEIEN
============================================================

Die Starter übernehmen folgende Aufgaben:

- setlocal DisableDelayedExpansion begrenzt Änderungen an
  Umgebungsvariablen auf die Batchdatei und deaktiviert die
  verzögerte Variablenerweiterung.
- chcp 65001 stellt die Konsolen-Codepage auf UTF-8 um.
- cd /d "%~dp0" wechselt in den Ordner der Batchdatei.
- %~n0 liefert den Namen der Batchdatei ohne Pfad und Endung.
- find /i "_test" prüft, ob der Testzusatz enthalten ist.
- pwsh startet PowerShell 7.
- -NoProfile startet ohne persönliche PowerShell-Profile.
- -File gibt das auszuführende PowerShell-Skript an.
- -Test aktiviert gegebenenfalls den Testmodus.
- %* reicht beim SendTo-Starter alle übergebenen Pfade weiter.
- pause hält das Fenster nach dem Skriptlauf offen.

-ExecutionPolicy Bypass betrifft nur die Ausführungsrichtlinie
der gestarteten PowerShell-Sitzung. Es erteilt keine zusätzlichen
Datei-, System- oder Administratorrechte.

Die Starter erstellen selbst keine Backups.
Die Pfadplanung, Ausführung und Auswertung erfolgen im
PowerShell-Skript.


13. DIREKTER AUFRUF MIT POWERSHELL 7
============================================================

Optional könnt ihr beide Skripte ohne Starter aufrufen.


Normale Variante im Testmodus:
------------------------------------------------------------

pwsh -NoProfile -File "C:\Pfad\009_Backup_mit_Datum_mit_Log.ps1" -Test

Die normale Variante verwendet auch beim direkten Aufruf den
Ordner der PS1-Datei als Quelle. Der aktuelle Arbeitsordner der
Konsole ändert diese Quelle nicht.


SendTo-Variante im Testmodus:
------------------------------------------------------------

pwsh -NoProfile -File "C:\Pfad\009_SendTo_Backup_mit_Datum_mit_Log.ps1" -Test "C:\Projekte\Projekt 01" "C:\Projekte\Projekt 02"

Ersetzt die Beispielpfade durch eure tatsächlichen Ordnerpfade.

Bei einem direkten Aufruf entscheidet ausschließlich der
Parameter -Test über den Testmodus. Ein _test im Namen der
PowerShell-Datei aktiviert ihn nicht automatisch.

Ohne -Test ist der Aufruf ein Echtlauf mit JA-Bestätigung.
Für die Grundkurs-Übungen sind die mitgelieferten Starter der
vorgesehene Weg.


14. HÄUFIGE FRAGEN UND FEHLER
============================================================

"pwsh" wird nicht gefunden.
------------------------------------------------------------

PowerShell 7 ist nicht installiert oder nicht über PATH
erreichbar. Prüft zunächst:

pwsh --version

Öffnet nach einer Installation ein neues Konsolenfenster.


robocopy.exe wurde nicht gefunden.
------------------------------------------------------------

Die Skripte sind für Windows vorgesehen. Prüft, ob sie auf
einem normalen Windows-System ausgeführt werden und ob
robocopy.exe über PATH erreichbar ist.


Das PowerShell-Skript wird nicht gefunden.
------------------------------------------------------------

Prüft, ob Starter und PowerShell-Skript im selben Ordner liegen.
Vergleicht den tatsächlichen PS1-Dateinamen mit dem Namen
hinter -File im Starter.

Achtet auf ungewollte Zusätze wie (1), (2) oder eine doppelte
Dateiendung wie .ps1.txt.


SendTo meldet, dass die Skriptdatei nicht erkannt wird.
------------------------------------------------------------

Wahrscheinlich wurde die Starter-Batchdatei selbst in den
SendTo-Ordner kopiert.

Im SendTo-Ordner darf nur eine Verknüpfung zur Batchdatei
liegen. Die Original-Batchdatei muss neben dem PowerShell-
Skript im Kursordner bleiben.


Der Testmodus ist trotz "TEST" in der Verknüpfung aus.
------------------------------------------------------------

Entscheidend ist _test im tatsächlichen Namen der Batchdatei.
Der Anzeigename der Verknüpfung und die Kommentarzeilen sind
dafür nicht maßgeblich.


Die SendTo-Verknüpfung funktioniert nach dem Umbenennen nicht.
------------------------------------------------------------

Prüft das Ziel der Verknüpfung. Es muss auf den aktuellen
Namen der Original-Batchdatei zeigen.


Bei SendTo wird der falsche Ordner gesichert.
------------------------------------------------------------

Prüft, ob die Verknüpfung wirklich auf den Starter der
SendTo-Version zeigt. Der normale Starter sichert seinen
eigenen Skriptordner.

Die SendTo-Ausgabe zeigt für jeden Plan ausdrücklich Quelle,
Ziel und Protokoll an. Prüft diese Angaben vor dem Echtlauf.


Beim direkten Start der SendTo-Version passiert nichts.
------------------------------------------------------------

Ohne übergebene Ordnerpfade beendet sich diese Variante mit
einer Fehlermeldung. Verwendet die SendTo-Verknüpfung oder
übergebt beim direkten Aufruf mindestens einen Ordnerpfad.


Eine ausgewählte Datei wird nicht gesichert.
------------------------------------------------------------

Die SendTo-Version verarbeitet nur Ordner. Direkt übergebene
Dateien werden mit "ÜBERSPRUNGEN: Kein Ordner" ausgelassen.


Bestimmte Dateien fehlen im Backup.
------------------------------------------------------------

Prüft die vorbereiteten Ausschlusslisten. Dateien wie
desktop.ini und thumbs.db sowie die Muster *.tmp, *.log und
*.bak werden bewusst nicht kopiert.

Auch die Ordner Temp, Cache und "Alte Dateien" sind in der
vorbereiteten Version ausgeschlossen.


Der Zielordner existiert bereits.
------------------------------------------------------------

Der Zeitstempel enthält Sekunden. Dieser Fall kann trotzdem
auftreten, wenn zwei Läufe sehr schnell gestartet wurden oder
der Zielordner bereits manuell angelegt wurde.

Das Skript verwendet den vorhandenen Zielordner nicht erneut,
sondern behandelt diesen Sicherungslauf als fehlgeschlagen.


Die Eingabe ja wird nicht akzeptiert.
------------------------------------------------------------

Die getestete Version verwendet einen Vergleich, der Groß- und
Kleinschreibung berücksichtigt. Gebt deshalb exakt ein:

JA


robocopy meldet einen Code zwischen 1 und 7.
------------------------------------------------------------

Das ist nicht automatisch ein Fehler. Die Bedeutung dieser
Codes wird in Abschnitt 11 beschrieben.


robocopy meldet Code 8 oder höher.
------------------------------------------------------------

Mindestens ein Kopierfehler ist aufgetreten. Prüft die Ausgabe
und im Echtmodus zusätzlich die Protokolldatei.

Mögliche Ursachen sind fehlende Rechte, gesperrte Dateien,
nicht erreichbare Pfade, ein voller Datenträger oder andere
Dateisystemprobleme.


15. GRENZEN UND SICHERHEIT
============================================================

- Zuerst den Testmodus mit Kopien unwichtiger Dateien verwenden.
- Vor jedem Echtlauf Quelle, Ziel und Ausschlüsse kontrollieren.
- Ausreichend freien Speicherplatz für das Backup sicherstellen.
- Keine Laufwerkswurzeln oder großen Systemordner als
  Übungsprojekt auswählen.
- Während der Sicherung die Quelldateien möglichst nicht durch
  andere Programme verändern.
- Eine erfolgreiche robocopy-Ausgabe ersetzt keine spätere
  Stichprobe oder Prüfung wichtiger Sicherungen.
- Die Protokolldatei beschreibt den Kopiervorgang, beweist aber
  nicht automatisch, dass jede gesicherte Datei inhaltlich
  vollständig und langfristig lesbar bleibt.
- Die Backupordner liegen standardmäßig innerhalb derselben
  Projektordner und damit möglicherweise auf demselben
  Datenträger wie die Originale.
- Ein Defekt, Verlust oder Verschlüsselung dieses Datenträgers
  kann deshalb Originale und lokale Backups gleichzeitig treffen.
- Für wichtige Daten zusätzlich eine getrennte Sicherung auf
  einem anderen Datenträger oder einem geeigneten anderen
  Speicherort verwenden.
- Die Skripte komprimieren und verschlüsseln die Backups nicht.
- Es gibt keine automatische Aufbewahrungsregel. Alte datierte
  Backupordner müssen bei Bedarf bewusst geprüft und verwaltet
  werden.
- /MIR wird nicht verwendet. Die Skripte löschen daher keine
  Dateien über eine robocopy-Spiegelung aus dem Ziel.
- Bereits kopierte Dateien werden bei einem späteren Fehler
  nicht automatisch zurückgenommen.
- Bei SendTo werden mehrere Backups nacheinander erstellt.
  Ein fehlgeschlagener Ordner verhindert nicht zwangsläufig,
  dass andere ausgewählte Ordner erfolgreich gesichert wurden.

Die Skripte sind Lernbeispiele für den PowerShell-7-Grundkurs.
Prüft sie vor dem Einsatz mit euren eigenen Dateien.

Die Nutzung dieses Codes erfolgt auf eigene Verantwortung.
Es wird keine Haftung für Datenverluste, unbeabsichtigte
Änderungen oder andere Schäden übernommen, die durch die
Verwendung des Skripts entstehen könnten.


16. KURZE ZUSAMMENFASSUNG
============================================================

Mit _test im Namen des Starters:
Nur mit robocopy /L prüfen und anzeigen.

Ohne _test:
Nach der exakten Eingabe JA das Backup erstellen.

Normale Variante:
Den Ordner des PowerShell-Skripts sichern.

SendTo-Variante:
Einen oder mehrere ausgewählte Projektordner sichern.

Backupziel:
Backups\Backup_<Zeitstempel> innerhalb des Quellordners.

Protokoll:
Eigene Logdatei im jeweiligen echten Backupordner.

Ausschlüsse:
Backups, Temp, Cache, Alte Dateien sowie die vorbereiteten
Dateien und Dateimuster.

robocopy:
/E kopiert auch leere Unterordner.
/L erzeugt die Vorschau.
/XD und /XF schließen Elemente aus.
/TEE und /UNILOG erzeugen Anzeige und Protokoll.
/MIR wird bewusst nicht verwendet.

Rückgabecode:
0 bis 7 sind nicht automatisch Fehler.
Ab 8 gilt ein Sicherungslauf als fehlgeschlagen.


Viel Spaß beim Lernen und Ausprobieren!

Chris
TOPTORIALS OFFICE
