Automatisierte Videokonvertierung
Hallo! Wie schon im Titel erwähnt bin ich dabei eine batch - Datei zu schreiben , die mir automatisch meine Videos konvertiert
Ich will:
Wenn ich ein Video in einen bestimmten Ordner ziehe wird das Video automatisch konvertiert und
in einen anderen Ordner verschoben.
Ich hab mir das so gedacht:
Ich hab mir ein watch - dir programm geholt, dass merkt wenn der Ordner verändert wurde
und führt automatisch ein batch - File aus. Das Batch File holt sich allererst den Dateinamen aus dem
Ordner und ruft dann das Commando - Line Konvertierungsprogramm FFMPEG auf.
Das Problem:
Der Grundaufbau steht und funktioniert, aber : wenn ich merere Files gleichzeitig in den
Ordner kopier werden nicht alle Dateinamen erkannt.
Code:
@echo off
for %%i in (D:\VID\VIDEO_OLD\*.*) do (
set Dateinamex=%%~nxi
set Dateiname=%%~ni
)
D:\VID\waitclose.exe 100 D:\VID\VIDEO_OLD\%Dateinamex%
echo bereit
D:\Convert\ffmpeg\bin\ffmpeg.exe -i D:\VID\VIDEO_OLD\%Dateinamex% -t 30 -s qvga -t 30 D:\VID\VIDEO_NEW\%Dateiname%.flv
echo ---------------------------------Conversion Succesful---------------------------
move D:\VID\VIDEO_OLD\%Dateinamex% D:\VID\VIDEO_BACKUP\%Dateinamex%
Zur Information:
Waitclose wartet bs die Datei vollständig kopiert ist.
Ich danke euch jetzt schon für die Antworten !
LG A0D0S0
Ich will:
Wenn ich ein Video in einen bestimmten Ordner ziehe wird das Video automatisch konvertiert und
in einen anderen Ordner verschoben.
Ich hab mir das so gedacht:
Ich hab mir ein watch - dir programm geholt, dass merkt wenn der Ordner verändert wurde
und führt automatisch ein batch - File aus. Das Batch File holt sich allererst den Dateinamen aus dem
Ordner und ruft dann das Commando - Line Konvertierungsprogramm FFMPEG auf.
Das Problem:
Der Grundaufbau steht und funktioniert, aber : wenn ich merere Files gleichzeitig in den
Ordner kopier werden nicht alle Dateinamen erkannt.
Code:
@echo off
for %%i in (D:\VID\VIDEO_OLD\*.*) do (
set Dateinamex=%%~nxi
set Dateiname=%%~ni
)
D:\VID\waitclose.exe 100 D:\VID\VIDEO_OLD\%Dateinamex%
echo bereit
D:\Convert\ffmpeg\bin\ffmpeg.exe -i D:\VID\VIDEO_OLD\%Dateinamex% -t 30 -s qvga -t 30 D:\VID\VIDEO_NEW\%Dateiname%.flv
echo ---------------------------------Conversion Succesful---------------------------
move D:\VID\VIDEO_OLD\%Dateinamex% D:\VID\VIDEO_BACKUP\%Dateinamex%
Zur Information:
Waitclose wartet bs die Datei vollständig kopiert ist.
Ich danke euch jetzt schon für die Antworten !
LG A0D0S0
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 169904
Url: https://administrator.de/contentid/169904
Ausgedruckt am: 26.11.2024 um 06:11 Uhr
6 Kommentare
Neuester Kommentar
Du musst dann die Verarbeitung mit in die Schleife nehmen um jede Datei einzeln zu verarbeiten:
@echo off
for %%i in (D:\VID\VIDEO_OLD\*.*) do (
D:\VID\waitclose.exe 100 D:\VID\VIDEO_OLD\%%~nxi
echo bereit
D:\Convert\ffmpeg\bin\ffmpeg.exe -i D:\VID\VIDEO_OLD\%%~nxi -t 30 -s qvga -t 30 D:\VID\VIDEO_NEW\%%~ni.flv
echo ---------------------------------Conversion Succesful---------------------------
move D:\VID\VIDEO_OLD\%%~nxi D:\VID\VIDEO_BACKUP\%%~nxi
)
Hallo A0D0S0
Es liegt an deiner FOR-Schleife !
Sie durchläuft zwar den Ordner wie du es wünscht und speichert die gefundenen Dateinamen in
Außerdem der Konvertierungsprozess eh nur ein einziges mal abgearbeitet wird - wodurch nur ein Video Konvertiert werden könnte
Du musst den Konvertierungsprozess also noch mit in die FOR-Schleife schieben, damit auch dieser für jede gefunden Datei ausgeführt wird.
~Arano
zu langsam
Es liegt an deiner FOR-Schleife !
Sie durchläuft zwar den Ordner wie du es wünscht und speichert die gefundenen Dateinamen in
%Dateiname%
aber sie überschreibt die Variable auch jedes mal ! So bleibt nur der zuletzt gefundene Dateiname in der Variable erhalten.Außerdem der Konvertierungsprozess eh nur ein einziges mal abgearbeitet wird - wodurch nur ein Video Konvertiert werden könnte
Du musst den Konvertierungsprozess also noch mit in die FOR-Schleife schieben, damit auch dieser für jede gefunden Datei ausgeführt wird.
for %%i in (D:\VID\VIDEO_OLD\*.*) do (
set Dateinamex=%%~nxi
set Dateiname=%%~ni
D:\VID\waitclose.exe 100 D:\VID\VIDEO_OLD\%Dateinamex%
echo bereit
D:\Convert\ffmpeg\bin\ffmpeg.exe -i D:\VID\VIDEO_OLD\%Dateinamex% -t 30 -s qvga -t 30 D:\VID\VIDEO_NEW\%Dateiname%.flv
echo ---------------------------------Conversion Succesful---------------------------
move D:\VID\VIDEO_OLD\%Dateinamex% D:\VID\VIDEO_BACKUP\%Dateinamex%
)
~Arano
zu langsam
Aloha,
also abgesehen davon, dass ich dich bitten möchte, code-Tags zu benutzen, würde ich auch darauf hinweisen, eventuell mit fliegenden Zollstöcken
" " zu arbeiten, sollten Leerzeichen im Dateinamen vorkommen.
Desweiteren setzt man kein
Und ebenso ist das Ganze
Womit sich dein Problem in Luft auflösen sollte und du nicht extra
greetz André
edit: toll da muss man mal eben was machen, lässt den Beitrag in der Bearbeitung offen und bekommt nur noch Platz #3 *gg*
also abgesehen davon, dass ich dich bitten möchte, code-Tags zu benutzen, würde ich auch darauf hinweisen, eventuell mit fliegenden Zollstöcken
" " zu arbeiten, sollten Leerzeichen im Dateinamen vorkommen.
Desweiteren setzt man kein
echo
off, wenn man auf Problemsuche ist ...Und ebenso ist das Ganze
set
überflüssig, du kannst auch alles in der Schleife bearbeiten@echo off
for %%i in ("D:\VID\VIDEO_OLD\*.*") do (
D:\VID\waitclose.exe 100 "%%i"
echo bereit
D:\Convert\ffmpeg\bin\ffmpeg.exe -i "%%i" -t 30 -s qvga -t 30 "D:\VID\VIDEO_NEW\%%~ni.flv"
echo ---------------------------------Conversion Succesful---------------------------
move "%%i" "D:\VID\VIDEO_BACKUP\%%~nxi"
)
pause
goto :eof
Womit sich dein Problem in Luft auflösen sollte und du nicht extra
setlocal enabledelayedexpansion
zusammen mit !Dateinamex!
nutzen musst.greetz André
edit: toll da muss man mal eben was machen, lässt den Beitrag in der Bearbeitung offen und bekommt nur noch Platz #3 *gg*
Hehe
Dafür dürfte deines das Beste von allen dreien sein.
Oh, da sagst du aber was ! "delayedexpansion"
Habe kein Windows zu Hand, kann es also nicht mal eben so ausprobieren.
Aber jetzt wo du es sagst, wäre A0D0S0 mit meinem Batch nicht sehr weit gekommen weil die richtige Variabelauflösung ohne enabledelayedexpansion nicht funktioniert hätte - richtig ?
~Arano
edit: toll da muss man mal eben was machen, lässt den Beitrag in der Bearbeitung offen und bekommt nur noch Platz #3 *gg*
Hätte ich mir keinen Kaffee gemacht, wäre ich wohl auch ein Plätzchen weiter oben gewesen *g*Dafür dürfte deines das Beste von allen dreien sein.
Oh, da sagst du aber was ! "delayedexpansion"
Habe kein Windows zu Hand, kann es also nicht mal eben so ausprobieren.
Aber jetzt wo du es sagst, wäre A0D0S0 mit meinem Batch nicht sehr weit gekommen weil die richtige Variabelauflösung ohne enabledelayedexpansion nicht funktioniert hätte - richtig ?
~Arano