a0d0s0
Goto Top

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

Content-ID: 169904

Url: https://administrator.de/contentid/169904

Ausgedruckt am: 26.11.2024 um 06:11 Uhr

miniversum
miniversum 18.07.2011 um 12:34:36 Uhr
Goto Top
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
)
Arano
Arano 18.07.2011 um 12:37:08 Uhr
Goto Top
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 %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 face-wink

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
Skyemugen
Skyemugen 18.07.2011 um 12:49:52 Uhr
Goto Top
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 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*
Arano
Arano 18.07.2011 um 13:06:18 Uhr
Goto Top
Hehe

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
miniversum
miniversum 18.07.2011 um 13:21:23 Uhr
Goto Top
Die genaue erklärung hab ich bei meiner Lösung mal unter den Tisch fallen lassen in der Hoffnung der Fragende fragt nach falls ihm was unklar ist.
A0D0S0
A0D0S0 18.07.2011 um 13:35:38 Uhr
Goto Top
ich habe jetzt die Verarbeitung in die Schleife reingenommen und alles funktioniert einwandfrei.
Danke für die Antworten

greez A0D0S0