# Bild mit Powershel kopieren und umbenennen



## mstut (23. März 2022)

Hallo

Da mir vor Jahren hier schon mal sehr gut geholfen wurde, Bitte ich noch einmal um Eure Hilfe.
Da ich Powershel nicht selber Programmieren kann, Bitte ich um ein fertiges Skript.
Ich habe einen 24/7 PC auf dem alles automatisch abläuft, na ja, zu 99%.
Ich habe eine Web Cam die ein Bild im Format 20220323.jpg erzeugt, das kann ich auch nicht ändern.
Das Datum ändert sich natürlich jeden Tag.
Jetzt möcht ich,
1 Bild verkleinert und in den Ordner Bild in 770x433 2022-03-23.jpg
1 Bild verkleinert und in den Ordner cam in 120x68 2022-03-23.jpg
Es geht um ein Bild pro Tag und zur Zeit mache ich das ein mal die Woche per Hand,
ändere die Größe und den Namen, aber ich hätte das gerne Automatisch jeden Tag.

mfg
Michael


----------



## Zvoni (23. März 2022)

Keine Ahnung von Powershell, aber zum konvertieren kann man ffmpeg nutzen

Als Batch mal zusammengeklopft

```
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
Set SourceFiles=.\Original\
Set BildFiles=.\Bild\
If Not Exist %BildFiles%NUL mkDir %BildFiles%
Set CamFiles=.\Cam\
If Not Exist %CamFiles%NUL mkDir %CamFiles%
Set VAR770=770x433
Set VAR120=120x68
For %%A in (%SourceFiles%*.jpg) Do (
Set InFile=%%~nA
@echo !InFile!
Set Extension=%%~xA
@echo !Extension!
Set OutFile=!InFile:~0,4!-!InFile:~4,2!-!InFile:~6,2!
@echo !OutFile!
Set InPath=%SourceFiles%!InFile!!Extension!
@echo !InPath!
Set OutPath770=%BildFiles%!OutFile!!Extension!
@echo !OutPath770!
Set OutPath120=%CamFiles%!OutFile!!Extension!
@echo !OutPath120!
ffmpeg -loglevel quiet -y -i !InPath! -vf scale=%VAR770% !OutPath770!
ffmpeg -loglevel quiet -y -i !InPath! -vf scale=%VAR120% !OutPath120!
)
```
Als "convert.bat" abspeichern und einen scheduled task einrichten (bzw. Cron-Job unter Linux)
Ich setzte voraus:
1) In irgendeinem Ordner ist folgendes drin:
Bsp. in c:\Temp\Webcam ist enthalten:
a) ein Ordner "Original" --> Das ist der Ordner, wo die WebCam die Bilder speichert
b) ffmpeg.exe ist dort
c) Dieses Batch-File
2) Es werden zwei weitere Ordner erzeugt: "Bild" und "Cam"


----------



## mstut (23. März 2022)

Hallo
Vielen Dank für deine Mühe, das Funktioniert.
Muss das jetzt mal an die Ortner anpassen.
Noch eine Frage, es kommt ja jeden Tag ein Bild hinzu, werden dann jedes mal alle Bilder Konvertiert auch die schon erstellt sind?
mfg
Michael


----------



## Zvoni (23. März 2022)

Ja, durchläuft alles was er in "Original" findet.
Man könnte u.U. nach erfolgreicher konvertierung das Bild von "Original" nach "Erledigt" schieben oder so ähnlich.
Ich geh mal von aus, dass du das Original nicht löschen willst


----------



## mstut (23. März 2022)

Hallo
ok, das wäre natürlich optimal, z.Z. wird eine Copy auf eine SD Card erstellt.
mfg
Michael


----------



## Zvoni (23. März 2022)

Zeilen 8,9,25,26 und 29 neu hinzu
Wird jetzt von "Original" nach "Erledigt" verschoben

```
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
Set SourceFiles=.\Original\
Set BildFiles=.\Bild\
If Not Exist %BildFiles%NUL mkDir %BildFiles%
Set CamFiles=.\Cam\
If Not Exist %CamFiles%NUL mkDir %CamFiles%
Set DoneFiles=.\Erledigt\
If Not Exist %DoneFiles%NUL mkDir %DoneFiles%
Set VAR770=770x433
Set VAR120=120x68
For %%A in (%SourceFiles%*.jpg) Do (
Set InFile=%%~nA
@echo !InFile!
Set Extension=%%~xA
@echo !Extension!
Set OutFile=!InFile:~0,4!-!InFile:~4,2!-!InFile:~6,2!
@echo !OutFile!
Set InPath=%SourceFiles%!InFile!!Extension!
@echo !InPath!
Set OutPath770=%BildFiles%!OutFile!!Extension!
@echo !OutPath770!
Set OutPath120=%CamFiles%!OutFile!!Extension!
@echo !OutPath120!
Set DonePath=%DoneFiles%!InFile!!Extension!
@echo !DonePath!
ffmpeg -loglevel quiet -y -i !InPath! -vf scale=%VAR770% !OutPath770!
ffmpeg -loglevel quiet -y -i !InPath! -vf scale=%VAR120% !OutPath120!
move !InPath! !DonePath!
)
```

EDIT: Ich habe jetzt relative Pfade benutzt.
Du kannst natürlich auch absolute Pfade benutzen, aber dann darauf achten in Anführungszeichen zu setzen falls Leerzeichen drin sind.
Keine Ahnung wie es sich mit UNC-Notation verhält


----------



## mstut (23. März 2022)

Hallo
ok, Danke
kann etwas dauern bis ich es richtig testen kann, Melde mich dann aber
mfg
Michael


----------



## Zvoni (23. März 2022)

Falls der Toaster unter Windows 10 läuft: https://www.technipages.com/scheduled-task-windows
in deinem Fall erzeugst du einen Task mit (als Admin ausführen)

```
schtasks /create /tn ConvertJPG /tr "c:\temp\WebCam\convert.bat" /sc daily /st 04:00:00
```
Erzeugt einen task namens "ConvertJPG" (welcher auf die Batch-Datei weist), welcher dann täglich um 04:00h morgens ausgeführt wird


----------



## mstut (23. März 2022)

ok, Danke
Ich verwende schon seit Jahren das Programm Z-Cron, für meine Zwecke genau richtig.
mfg
Michael


----------



## mstut (24. März 2022)

Hallo
Habe es mal angepasst, hat so funktioniert wie ich es mir gedacht/gehoft habe.
Kann man den Pfad auch so zu schreiben? c:\Ordner\....\....
Nochmals vielen Dank.
mfg
Michael


```
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
Set SourceFiles=.\Original\
Set BildFiles=.\..\html\camarchiv\2022\
If Not Exist %BildFiles%NUL mkDir %BildFiles%
Set CamFiles=.\..\html\camarchiv\2022\cam\
If Not Exist %CamFiles%NUL mkDir %CamFiles%
Set DoneFiles=.\Erledigt\
If Not Exist %DoneFiles%NUL mkDir %DoneFiles%
Set VAR770=770x433
Set VAR120=120x68
For %%A in (%SourceFiles%*.jpg) Do (
Set InFile=%%~nA
@echo !InFile!
Set Extension=%%~xA
@echo !Extension!
Set OutFile=!InFile:~0,4!-!InFile:~4,2!-!InFile:~6,2!
@echo !OutFile!
Set InPath=%SourceFiles%!InFile!!Extension!
@echo !InPath!
Set OutPath770=%BildFiles%!OutFile!!Extension!
@echo !OutPath770!
Set OutPath120=%CamFiles%!OutFile!!Extension!
@echo !OutPath120!
Set DonePath=%DoneFiles%!InFile!!Extension!
@echo !DonePath!
ffmpeg -loglevel quiet -y -i !InPath! -vf scale=%VAR770% !OutPath770!
ffmpeg -loglevel quiet -y -i !InPath! -vf scale=%VAR120% !OutPath120!
move !InPath! !DonePath!
)
```


----------



## Zvoni (24. März 2022)

mstut hat gesagt.:


> Hallo
> Habe es mal angepasst, hat so funktioniert wie ich es mir gedacht/gehoft habe.
> Kann man den Pfad auch so zu schreiben? c:\Ordner\....\....
> Nochmals vielen Dank.
> ...


ja, hatte ich auch geschrieben. („Absolute Pfade“)
aufpassen wenn Leerzeichen im pfad sind. Dann in Anführungszeichen
einfach mal ausprobieren


----------



## mstut (25. März 2022)

Hallo
Oh, hatte ich wohl überlesen.
mfg
Michael


----------

