2013-05-13 6 views
0

Je ne suis pas un expert en programmation par lots, ma seule compétence est en C \ C++. Je ne suis même pas sûr de savoir comment s'y prendre vraiment.Looping de programmation par lots?

J'ai un tas de vidéos comme Video1.mp4, Video2.mp4 (ce n'est pas leurs noms réels, mais ils ont des numéros indiquant début et à la fin)

Fondamentalement, j'ai cette commande FFMPEG que je peux utiliser pour convertir tous ces à un rapport d'aspect de 16h10 qui ressemble à ceci:

"ffmpeg -i "Section 1 Video 1.mp4" -aspect 16:10 OutSection 1 Video 1.mp4" 
"ffmpeg -i "Section 1 Video 2.mp4" -aspect 16:10 OutSection 1 Video 2.mp4" 
"ffmpeg -i "Section 2 Video 1.mp4" -aspect 16:10 OutSection 2 Video 1.mp4" 

maintenant, au lieu d'écrire cette commande encore et encore, est là de toute façon pour moi de remplacer les chiffres pour les variables réelles ? Je sais que la section 1 se termine à la vidéo 27 et la section 2 se termine à la vidéo 26 et ainsi de suite. Fondamentalement, j'ai besoin de la boucle pour fonctionner 165 fois, donc je n'ai pas besoin d'écrire la commande 165 fois.

Ou est-ce au-delà de la portée d'un simple programme batch?

+0

Est-ce que cela vous résoudre problème: http://stackoverflow.com/questions/5642021/batch-process-all-files-in-directory – Stolas

+1

Attendez, ne sera pas le deux ensembles de citations interfèrent les uns avec les autres? – user2033427

Répondre

0

Eh bien, bien sûr que le batch peut le faire, la vraie question est de savoir comment gérer la question correctement?

Voici trois façons: la commande FFMPEG est simplement renvoyée en écho. Supprimez le ECHO pour l'activer.

@ECHO OFF 
SETLOCAL enabledelayedexpansion 
:: way the first 
for /l %%a IN (1,1,27) DO FOR /l %%b IN (1,1,27) DO (
IF EXIST "section %%a video %%b.mp4" ECHO FFMPEG -i "Section %%a Video %%b.mp4" -aspect 16:10 "OutSection %%a Video %%b.mp4" 
) 
ECHO ============================== 
:: Way the second 
for /l %%a IN (1,1,27) DO FOR /l %%b IN (1,1,27) DO (
SET /a total=%%a+%%b 
IF !total! leq 28 ECHO FFMPEG -i "Section %%a Video %%b.mp4" -aspect 16:10 "OutSection %%a Video %%b.mp4" 
) 
ECHO ============================== 
:: Way the third 
FOR %%i IN ("Section * Video *.mp4") DO (
ECHO FFMPEG -i "%%i" -aspect 16:10 "Out%%i" 
) 
ECHO ============================== 

Maintenant - la question ici est - êtes-vous sûr de votre ligne FFMPEG? Il me semble que vous avez omis les guillemets autour du nom de fichier de sortie.

Et l'autre question est pouvez-vous compter? Si vous avez, comme vous le dites, 27 vidéos dans la section 1, 26 dans 2 et ainsi de suite, alors vous auriez probablement 27 + 26 + 25 ... 3 + 2 + 1 vidéos à convertir - et ce serait 378 selon mon calcul - et plus important encore, lot - pas 165.

+0

Haha, ouais je me suis rendu compte que j'avais foiré la commande, mais c'était comme une commande de maquette, ça ressemble à ça, mais ce n'est pas la vraie commande que j'ai utilisée avec de vrais noms. Mais la deuxième façon semble être la façon dont je chercherais. Je vous remercie! –

+0

Oh, et il y a 165 vidéos, et dans votre exemple vous faites passer 27 sections où je n'ai que 6 sections, et le nombre de vidéos par section est varié. –