Wer keinen Mac besitzt steht immer vor dem Problem, dass er die Bilder nicht einfach aus der Foto-App laden kann. Aber trotzdem wird das nicht einfach gesichert, sondern liegt immer in der iCloud. Für eine lokale Sicherung will ich hier für Windows-PC ein Workarround zeichen.
Ich nutze eine VM mit Windows 10 Pro, 22H2 und iCloud Software 14.2
die Aufgabe der VM ist es, die geteilten Alben zu downloaden und dann kopiere ich mit einem Script die letzten 500 Bilder auf einen Bilderrahmen (Raspi + 10″ Display) via WLAN.
Die “iCloud-Fotos” werden nun aber nicht auf den PC kopiert.. aber stehen als “Verknüpfung” bereit. Man kann das Bild anklicken oder kopieren und es wird ad-hoc aus der iCloud kopiert:
Damit das nun automatisiert kopiert wird gibt es hier ein Batch-Skript:
@echo off
:Start
SET "Source=C:\Users\danny\Pictures\iCloud Photos\Photos"
SET "Destination=G:\icloudPhotos\Photos"
SET "Copied=false"
echo "Start...."
FOR /R "%Source%" %%F IN (*.jpg;*.jpeg;*.png;*.gif) DO (
echo | set /p ="Prüfe Datei %%~NXF .."
IF NOT EXIST "%Destination%\%%~NXF" (
echo .. Datei %%~NXF wird kopiert
xcopy "%%F" "%Destination%\"
SET "Copied=true"
@REM timeout /t 1 >nul
) else (
echo .. existiert bereits
)
)
IF "%Copied%"=="false" (
timeout /t 60
)
goto Start
wenn man es ausführt, dann sieht es wie folgt aus:
Das gegebene Batch-Skript ist für Windows-PCs bestimmt und führt folgende Aktionen aus:
- @echo off: Dieser Befehl verhindert die Anzeige von Befehlen oder anderen Meldungen in der Konsole während der Ausführung des Skripts.
- :Start: Dies ist ein Label namens “Start”. Es ermöglicht die Wiederholung eines bestimmten Teils des Skripts mithilfe des
goto
-Befehls. - SET-Befehle: Diese Befehle definieren drei Umgebungsvariablen:
Source
: Der Pfad, von dem Bilder kopiert werden sollen.Destination
: Der Pfad, wohin die Bilder kopiert werden sollen.Copied
: Ein Flag, das anzeigt, ob während der aktuellen Iteration des Skripts Bilder kopiert wurden oder nicht.
- echo “Start….”: Zeigt den Text “Start….” in der Konsole an.
- FOR /R “%Source%” %%F IN (.jpg;.jpeg;.png;.gif) DO: Diese Schleife durchsucht rekursiv alle Dateien im “Source”-Verzeichnis und seinen Unterordnern, die die angegebenen Dateierweiterungen haben (jpg, jpeg, png, gif).
- echo | set /p =”Prüfe Datei %%~NXF ..”: Zeigt den Namen der gerade geprüften Datei in der Konsole an, ohne einen Zeilenumbruch am Ende.
- IF NOT EXIST “%Destination%%%~NXF”: Dieser Befehl überprüft, ob die Datei bereits im Zielverzeichnis existiert.
- xcopy “%%F” “%Destination%”: Wenn die Datei im Zielverzeichnis nicht existiert, wird sie dorthin kopiert.
- SET “Copied=true”: Setzt das “Copied”-Flag auf “true”, wenn eine Datei kopiert wurde.
- @REM timeout /t 1 >nul: Dies ist ein auskommentierter Befehl, der das Skript für eine Sekunde pausieren würde, wenn er nicht auskommentiert wäre.
- IF “%Copied%”==”false”: Überprüft, ob während der aktuellen Iteration des Skripts Dateien kopiert wurden.
- timeout /t 60: Wenn keine Dateien kopiert wurden, pausiert das Skript für 60 Sekunden.
- goto Start: Springt zurück zum “Start”-Label und führt das Skript von dort erneut aus.
Zusammengefasst: Das Skript überprüft kontinuierlich das “Source”-Verzeichnis auf neue Bilder und kopiert diese ins “Destination”-Verzeichnis, wenn sie dort noch nicht vorhanden sind. Wenn während einer Iteration keine Dateien kopiert wurden, pausiert das Skript für 60 Sekunden, bevor es erneut startet.