I'm using MediaInfo to check the codecs in my files, but it's a laborious process to go through each one manually. Is there a way to scan a whole directory of video files and then list the results?
Use the CLI (command line interface) version of MediaInfo.
Here's a quick batch file I put together.
It may be glitchy, but should work, as it's based off another batch processor I've been working on for a while.
It assumes your structure contains a single level of subfolders, for example:
D:\My Videos\Foo the Epic\Foo1x01.mp4
D:\My Videos\Foo the Epic\Foo1x02.avi
...
D:\My Videos\Foo the Epic\Foo1x12.divx
D:\My Videos\Bar the Final\Bar1x01.mov
D:\My Videos\Bar the Final\Bar0x02.qt
...
D:\My Videos\Bar the Final\Bar0x10.avi
You would point MediaInfoBatch at "D:\My Videos" and set a logfile name like MyVideos.txt
MediaInfoBatch "D:\My Videos" MyVideos.txt
Note double-quoted path as it contains spaces. Double-quoting is also necessary if it contains ampersands. It doesn't hurt to just double-quote it anyway.
Save as
MediaInfoBatch.bat (or whatever you want, but then you'll have to change the syntax text).
Easiest to throw it into the same folder as the CLI mediainfo.exe
Code:
@echo off
rem MediaInfoBatch
rem -------------
rem Runs command line interface (CLI) mediainfo on each file in each subfolder of the specified location
rem First parameter should be target directory, enclosed in double-quotes if there are spaces or ampersands within
rem Assumes files are in subfolders within the target, ie D:\Movies\Title1\file1 ... D:\Movies\Title20\file30
rem should be executed as MediaInfoBatch.bat D:\Movies
rem Second parameter should be filepath for logfile, enclosed in double-quotes if there are spaces or ampersands within
rem Check for proper command line
IF %1a==a GOTO syntax
IF %2a==a GOTO syntax
rem Remove double-quotes in parameter
set tmp_MediaInfoBatch_Target_raw=%1
set tmp_MediaInfoBatch_Target=%tmp_MediaInfoBatch_Target_raw:"=%
set tmp_MediaInfoBatch_Logfile_raw=%2
set tmp_MediaInfoBatch_Logfile=%tmp_MediaInfoBatch_Logfile_raw:"=%
GOTO check_prereqs
:syntax
echo MediaInfo Batch processor
echo -------------------------
echo Syntax: MediaInfoBatch [path] [logfile]
echo Where
echo [path] is root path to *folders* to be processed.
echo Do NOT include trailing backslash.
echo Ex: C:\MyVideos
echo [logfile] is filepath for logfile to contain output.
echo Ex: C:\MyVideos\MediaInfo.txt
echo Enclose any paths with spaces or ampersands in double-quotes.
echo Ex: "C:\My Videos"
echo Example:
echo MediaInfoBatch C:\MyVideos C:\MyVideos\MediaInfo.txt
echo will run MediaInfo on all files in the first level of directories
echo under C:\MyVideos and write the output to C:\MediaInfo.txt
pause
GOTO end
:check_prereqs
IF NOT EXIST MediaInfo.exe (
echo MediaInfo.exe is missing. We need the Command Line Interface version of MediaInfo. Please put it in the same directory as this batch file.
pause
GOTO end
)
GOTO main
:main
rem Look in target location
FOR /f "tokens=* usebackq" %%G IN (`dir /b /a:d "%tmp_MediaInfoBatch_Target%"`) DO (
rem Interate through subfolders
FOR /f "tokens=* usebackq" %%H IN (`dir /b /a:-d "%tmp_MediaInfoBatch_Target%\%%G"`) DO (
rem Run mediainfo on each file
mediainfo -f "%tmp_MediaInfoBatch_Target%\%%G\%%H" >>"%tmp_MediaInfoBatch_Logfile%"
)
)
:end