2016-08-04 44 views
1

In Windows möchte ich eine Batch-Datei erstellen, die ein bestimmtes Verzeichnis durchläuft alle Namen der Dateien und übergeben sie jeweils an einen Befehl, ffmpeg in meinem Fall. Ich habe zwei oder drei Beispiele gefunden, wie ffmpeg zum Durchlaufen eines Ordners benutzt wird, aber sie waren alle in Linux. Zur Zeit ich ein Python-Skript verwenden, dies zu tun:Durchlaufen Dateinamen in einem Ordner in Windows und senden Sie jeden Namen zu ffmpeg Befehl

import os 
import subprocess 

sourcedir = "G:\Animation\Anime\OnePiece\Episodes\Main" 
outputdir = "G:\Animation\Anime\OnePiece\Episodes\Converted" 

for file in os.listdir(sourcedir): 
    name = file[:file.rfind(".")] 
    subprocess.call("ffmpeg -i " + sourcedir + "\\" + name + ".mkv -s 640x480 -map 0 -vcodec libx265 "+ outputdir + "\\" + name + ".mkv") 

Auch wenn es direkt über eine Windows-Batch-Datei anstatt über Python läuft die Zeit abnimmt, benötigt ein Video von 10 Sekunden zu kodieren, wird es buchstäblich sparen Ich Stunden.

Und nur ein Gedanke, wird es besser sein mit den Bash-Befehlen auf Cygwin?

+0

Was Sie brauchen, ist ein 'for' Schleife - einen Befehl öffnen Aufforderungsfenster, geben Sie' für/'und den Hilfetext lesen ... – aschipfl

+0

ich es sehr bezweifeln wird ffmpeg schneller laufen?. Es spielt keine Rolle, ob Python oder cmd.exe den Prozess erzeugt, ffmpeg wird trotzdem ausgeführt. – Squashman

+0

@aschipfl Ich weiß, was eine for-Schleife ist, aber ich weiß nicht Cmd/Batch-Programmierung, können Sie bitte eine Syntax zu extrahieren alle Dateinamen einen nach Namen und übertragen sie auf einen Befehl? – daddyodevil

Antwort

1

Dies sollte Ihnen nahe kommen. Ich verstehe die Syntax von ffmpeg nicht wirklich.

@echo off 
set "sourcedir=G:\Animation\Anime\OnePiece\Episodes\Main" 
set "outputdir=G:\Animation\Anime\OnePiece\Episodes\Converted" 

PUSHD "%sourcedir%" 

for %%F in (*.mkv) DO ffmpeg -i "%%F" -s 640x480 -map 0 -vcodec libx265 "%outputdir%\%%F" 

POPD 
+0

Funktioniert wie ein Charme. Vielen Dank Mann – daddyodevil

+0

Vielen Dank. Es hat mir geholfen –