Welcome to the wiki talking about FFmpeg on Windows.

Main batch file for downloading and installing MinGW + MSYS automatically

main.bat
@REM ***************************************************************************
@REM
@REM Main batch file for downloading and installing MinGW + MSYS automatically
@REM
@REM Version: 1.2 @ August 28, 2011
@REM
@REM *** License ***
@REM
@REM Except where otherwise noted, all of the batchs and scripts are
@REM copyrighted by http://www.FFmpegWindows.org
@REM
@REM Copyright (C) 2010-2011 http://www.FFmpegWindows.org All rights reserved.
@REM
@REM These batchs and scripts are provided "as-is," without any express or
@REM implied warranty. In no event shall the author be held liable for any
@REM damages arising from the use of them.
@REM
@REM Permission is granted to anyone to use these batchs and scripts for
@REM any purpose, including commercial applications, and to alter and
@REM redistribute it, provided that the following conditions are met:
@REM
@REM 1. All redistributions of batchs and scripts must retain all copyright
@REM    notices that are currently in place, and this list of conditions
@REM    without modification.
@REM
@REM 2. Modified versions must be plainly marked as such, and must not be
@REM    misrepresented as being the original batchs and scripts.
@REM
@REM http://www.ffmpegwindows.org
@REM
@REM ***************************************************************************
 
@ECHO OFF
REM set the flag which indicates we are running within the main batch file
SET IN_MINGW_MSYS_BAT=1

@REM ***************************************************************************
 
:CONFIG
REM the directory for saving toolchains and libraries of MinGW + MSYS
SET SAVE_DIR=%~DP0downloads\
REM the directory for installing toolchains and libraries of MinGW + MSYS
SET INSTALL_BASE=C:\MM\
 
:INIT
REM default GCC version
SET GCC_VER=4.5.2

REM whether include vim or not
SET INCLUDE_VIM=0

REM batch for MinGW files
SET MINGW_BAT=%~DP0mingw.bat
REM batch for MSYS files
SET MSYS_BAT=%~DP0msys.bat
REM batch for Libraries files
SET LIBS_BAT=%~DP0libs.bat

REM batch for list toolchains
SET LIST_BAT=%~DP0list.bat
REM batch for downloading toolchains
SET DOWNLOAD_BAT=%~DP0download.bat
REM batch for installing toolchains
SET INSTALL_BAT=%~DP0install.bat

REM wget util used for downloading
REM http://sourceforge.net/projects/mingw/files/mingwPORT/Current%20Releases/wget-1.9.1-mingwPORT.tar.bz2/download
SET WGET=%~DP0tools\wget.exe

REM 7-Zip util used for extracting *.gz and *.lzma files
REM http://sourceforge.net/projects/sevenzip/files/7-Zip/9.20/7za920.zip/download
IF EXIST "%~DP0tools\7za.exe" (
	SET W7Z=%~DP0tools\7za.exe
) ELSE (
	SET W7Z=%ProgramFiles%\7-Zip\7z.exe
)
 
GOTO :MAINMENU

@REM ***************************************************************************
 
:CHOOSE_VERSION
CLS
ECHO.
ECHO ****** GCC version and VIM ***************************
ECHO.
IF "%GCC_VER%"=="4.2.1" (
	ECHO *1. GCC 4.2.1
) ELSE (
	ECHO  1. GCC 4.2.1
)
ECHO.
IF "%GCC_VER%"=="4.5.2" (
	ECHO *2. GCC 4.5.2
) ELSE (
	ECHO  2. GCC 4.5.2
)
ECHO.
IF "%INCLUDE_VIM%"=="1" (
	ECHO *3. Toggle whether including vim or not
) ELSE (
	ECHO  3. Toggle whether including vim or not
)
ECHO.
ECHO  0. Return to Main Menu
ECHO.
 
SET SELECTION=
SET /P SELECTION=Selection: 
 
IF "%SELECTION%"=="1" (
	SET GCC_VER=4.2.1
)
IF "%SELECTION%"=="2" (
	SET GCC_VER=4.5.2
)
IF "%SELECTION%"=="3" (
	IF "%INCLUDE_VIM%"=="1" (
		SET INCLUDE_VIM=0
	) ELSE (
		SET INCLUDE_VIM=1
	)
)
IF "%SELECTION%"=="0" (
	GOTO :MAINMENU
)
 
GOTO :CHOOSE_VERSION

@REM ***************************************************************************
 
:MAINMENU
CD /D %~DP0
CLS
ECHO.
ECHO ****** Download and Install MinGW + MSYS *******************
ECHO.
ECHO  1. Choose GCC version and VIM
ECHO.
ECHO  2. List all the files needed
ECHO.
ECHO  3. Download MinGW ^(GCC %GCC_VER%^) to "%SAVE_DIR%"
ECHO.
IF "%INCLUDE_VIM%"=="1" (
	ECHO  4. Download MSYS ^(with vim^) to "%SAVE_DIR%"
) ELSE (
	ECHO  4. Download MSYS ^(without vim^) to "%SAVE_DIR%"
)
ECHO.
ECHO  5. Download Libraries ^(zlib, bzip2^) to "%SAVE_DIR%"
ECHO.
ECHO  6. Install MinGW ^(GCC %GCC_VER%^) to "%INSTALL_BASE%MinGW\"
ECHO.
IF "%INCLUDE_VIM%"=="1" (
	ECHO  7. Install MSYS ^(with vim^) to "%INSTALL_BASE%MSYS\"
) ELSE (
	ECHO  7. Install MSYS ^(without vim^) to "%INSTALL_BASE%MSYS\"
)
ECHO.
ECHO  8. Install Libraries ^(zlib, bzip2^) to "%INSTALL_BASE%MinGW\"
ECHO.
ECHO  9. Download and then install all the files
ECHO.
ECHO  0. Exit
ECHO.
 
SET OPERATION=
SET TARGET=
SET SELECTION=
SET /P SELECTION=Selection: 
ECHO.
 
IF "%SELECTION%"=="1" (
	GOTO :CHOOSE_VERSION
)
IF "%SELECTION%"=="2" (
	SET OPERATION=LIST
	SET TARGET=ALLFILE
	GOTO :ACTION
)
IF "%SELECTION%"=="3" (
	SET OPERATION=DOWNLOAD
	SET TARGET=MINGW
	GOTO :ACTION
)
IF "%SELECTION%"=="4" (
	SET OPERATION=DOWNLOAD
	SET TARGET=MSYS
	GOTO :ACTION
)
IF "%SELECTION%"=="5" (
	SET OPERATION=DOWNLOAD
	SET TARGET=LIBS
	GOTO :ACTION
)
IF "%SELECTION%"=="6" (
	SET OPERATION=INSTALL
	SET TARGET=MINGW
	GOTO :ACTION
)
IF "%SELECTION%"=="7" (
	SET OPERATION=INSTALL
	SET TARGET=MSYS
	GOTO :ACTION
)
IF "%SELECTION%"=="8" (
	SET OPERATION=INSTALL
	SET TARGET=LIBS
	GOTO :ACTION
)
IF "%SELECTION%"=="9" (
	SET OPERATION=DOWNLOAD_AND_INSTALL
	SET TARGET=ALLFILE
	GOTO :ACTION
)
IF "%SELECTION%"=="0" (
	GOTO :END
)
 
GOTO :MAINMENU

@REM ***************************************************************************
 
:ACTION
REM check batch for MinGW files
IF NOT EXIST "%MINGW_BAT%" (
	CALL :NEED_BATCH_OR_EXE "%MINGW_BAT%"
	GOTO :MAINMENU
)
REM check batch for MSYS files
IF NOT EXIST "%MSYS_BAT%" (
	CALL :NEED_BATCH_OR_EXE "%MSYS_BAT%"
	GOTO :MAINMENU
)
REM check batch for Libraries files
IF NOT EXIST "%LIBS_BAT%" (
	CALL :NEED_BATCH_OR_EXE "%LIBS_BAT%"
	GOTO :MAINMENU
)

REM list files
IF "%OPERATION%"=="LIST" (
	CALL :LIST
	IF ERRORLEVEL==1 GOTO :MAINMENU
)
REM download files
IF "%OPERATION%"=="DOWNLOAD" (
	CALL :DOWNLOAD
	IF ERRORLEVEL==1 GOTO :MAINMENU
)
REM install files
IF "%OPERATION%"=="INSTALL" (
	CALL :INSTALL
	IF ERRORLEVEL==1 GOTO :MAINMENU
)
REM download and then install files
IF "%OPERATION%"=="DOWNLOAD_AND_INSTALL" (
	SET OPERATION=DOWNLOAD
	CALL :DOWNLOAD
	IF ERRORLEVEL==1 GOTO :MAINMENU
	SET OPERATION=INSTALL
	CALL :INSTALL
	IF ERRORLEVEL==1 GOTO :MAINMENU
)
 
PAUSE
GOTO :MAINMENU

@REM ***************************************************************************
 
:NEED_BATCH_OR_EXE
REM need batch file or execute util
ECHO.
ECHO Error: "%~NX1" not found.
ECHO.
PAUSE
 
EXIT /B 1

@REM ***************************************************************************
 
:LIST
REM check batch for listing toolchains
SET OPERATE_BATCH=%LIST_BAT%
IF NOT EXIST "%OPERATE_BATCH%" (
	CALL :NEED_BATCH_OR_EXE "%OPERATE_BATCH%"
	EXIT /B 1
)

REM list MinGW files
CALL %MINGW_BAT%
REM list MSYS files
CALL %MSYS_BAT%
REM list Libraries files
CALL %LIBS_BAT%
 
EXIT /B 0

@REM ***************************************************************************
 
:DOWNLOAD
REM check batch for downloading toolchains
SET OPERATE_BATCH=%DOWNLOAD_BAT%
IF NOT EXIST "%OPERATE_BATCH%" (
	CALL :NEED_BATCH_OR_EXE "%OPERATE_BATCH%"
	EXIT /B 1
)

REM check wget util used for downloading
IF NOT EXIST "%WGET%" (
	CALL :NEED_BATCH_OR_EXE "%WGET%"
	EXIT /B 1
)

REM download MinGW files
IF "%TARGET%"=="MINGW" (
	CALL %MINGW_BAT%
	IF ERRORLEVEL==1 EXIT /B 1
)
REM download MSYS files
IF "%TARGET%"=="MSYS" (
	CALL %MSYS_BAT%
	IF ERRORLEVEL==1 EXIT /B 1
)
REM download Libraries files
IF "%TARGET%"=="LIBS" (
	CALL %LIBS_BAT%
	IF ERRORLEVEL==1 EXIT /B 1
)
REM download all files
IF "%TARGET%"=="ALLFILE" (
	CALL %MINGW_BAT%
	IF ERRORLEVEL==1 EXIT /B 1
	CALL %MSYS_BAT%
	IF ERRORLEVEL==1 EXIT /B 1
	CALL %LIBS_BAT%
	IF ERRORLEVEL==1 EXIT /B 1
)
 
EXIT /B 0

@REM ***************************************************************************
 
:INSTALL
REM check batch for installing toolchains
SET OPERATE_BATCH=%INSTALL_BAT%
IF NOT EXIST "%OPERATE_BATCH%" (
	CALL :NEED_BATCH_OR_EXE "%OPERATE_BATCH%"
	EXIT /B 1
)

REM check 7-Zip util used for extracting *.gz and *.lzma files
IF NOT EXIST "%W7Z%" (
	CALL :NEED_BATCH_OR_EXE "%W7Z%"
	EXIT /B 1
)

REM install MinGW files
IF "%TARGET%"=="MINGW" (
	SET INSTALL_DIR=%INSTALL_BASE%MinGW\
	CALL %MINGW_BAT%
	IF ERRORLEVEL==1 EXIT /B 1
)
REM install MSYS files
IF "%TARGET%"=="MSYS" (
	SET INSTALL_DIR=%INSTALL_BASE%MSYS\
	CALL %MSYS_BAT%
	IF ERRORLEVEL==1 EXIT /B 1
)
REM install Libraries files
IF "%TARGET%"=="LIBS" (
	SET INSTALL_DIR=%INSTALL_BASE%MinGW\
	CALL %LIBS_BAT%
	IF ERRORLEVEL==1 EXIT /B 1
)
REM install all files
IF "%TARGET%"=="ALLFILE" (
	SET INSTALL_DIR=%INSTALL_BASE%MinGW\
	CALL %MINGW_BAT%
	IF ERRORLEVEL==1 EXIT /B 1
	SET INSTALL_DIR=%INSTALL_BASE%MSYS\
	CALL %MSYS_BAT%
	IF ERRORLEVEL==1 EXIT /B 1
	SET INSTALL_DIR=%INSTALL_BASE%MinGW\
	CALL %LIBS_BAT%
	IF ERRORLEVEL==1 EXIT /B 1
)
 
EXIT /B 0

@REM ***************************************************************************
 
:END
CD /D %~DP0
ECHO ON

Batch files list

Download the batch files and utils

Print/export