@echo off
@chcp 1251>nul
set "ffnx=Current (Retail/RTM), 492350f6-3a01-4f97-b9c0-c7c6ddf67d60"
set "winred=Default"
set "arch=64"
set "lang=ru-ru"
::-------------------------------------------------
:Menu
set userinpm=
cls
Echo -------------------------------------------------------------------
Echo Download_Office_last_version
Echo -------------------------------------------------------------------
Echo+
echo FFN %ffnx%
Echo+
echo WINRED %winred%
Echo+
echo ARCH %arch%
Echo+
echo LANG %lang%
echo+
echo **************************
echo+
echo F) Set FFN Office
echo W) Set WINRED Office
echo A) Set ARCH Office
echo L) Set LANG Office
echo Q) Exit
echo **************************
echo D) Download Office!
echo+
set /p userinpm= ^> Select Option :
set userinpm=%userinpm:~0,1%
::переход на выбор FFN
if /i "%userinpm%"=="F" goto :f
::переход на выбор FFN
if /i "%userinpm%"=="W" goto :w
::переход на выбор FFN
if /i "%userinpm%"=="A" goto :a
::переход на выбор FFN
if /i "%userinpm%"=="L" goto :l
::переход на выход
if /i "%userinpm%"=="Q" goto :eof
if /i "%userinpm%"=="D" goto :start
goto :Menu
:f
set userinpf=
cls
Echo -------------------------------------------------------------------
Echo Download_Office_last_version
Echo -------------------------------------------------------------------
Echo+
echo FFN %ffnx%
Echo+
echo **************************
echo+
echo 1) Current (Retail/RTM), 492350f6-3a01-4f97-b9c0-c7c6ddf67d60
echo 2) Monthly Enterprise, 55336b82-a18d-4dd6-b5f6-9e5095c314a6
echo 3) Semi-Annual Enterprise (Business), 7ffbc6bf-bc32-4f92-8982-f9dd17fd3114
echo 4) Semi-Annual Channel (Targeted) [Microsoft], 9a3b7ff2-58ed-40fd-add5-1e5158059d1c
echo 5) Semi-Annual Channel [Microsoft], f4f024c8-d611-4748-a7e0-02b6e754c0fe
echo 6) Microsoft_LTSC2021, 86752282-5841-4120-ac80-db03ae6b5fdb
echo 7) Insiders_LTSC2024, 20481f5c-c268-4624-936c-52eb39ddbd97
echo 8) Microsoft_LTSC2024, c02d8fe6-5242-4da8-972f-82ee55e00671
echo 9) Office 2024 Perpetual Enterprise, 7983bac0-e531-40cf-be00-fd24fe66619c
echo 10) Office 2021 Perpetual Enterprise, 5030841d-c919-4594-8d2d-84ae4f96e58e
echo 11) Monthly Channel [Microsoft], 5462eee5-1e97-495b-9370-853cd873bb07
echo 12) Office 2019 Perpetual Enterprise, f2e724c1-748f-4b47-8fb8-8e0d210e9208
echo 13) Office 2019 Perpetual Enterprise [Microsoft], 1d2d2ea6-1680-4c56-ac58-a441c8c24ff9
echo 14) CurrentPreview (Office Insider SLOW), 64256afe-f5d9-4f86-8936-8840a6a4f5be
echo 15) BetaChannel (Office Insider FAST), 5440fd1f-7ecb-4221-8110-145efaa6372f
echo 16) SemiAnnualPreview (Business Insider), b8f9b850-328d-4355-9145-c59439a0c4cf
echo 17) Office 2019 Perpetual Enterprise (Insiders), 2e148de9-61c8-4051-b103-4af54baffbb4
echo 18) Monthly Channel [Dogfood], f3260cf1-a92c-4c75-b02e-d64c0a86a968
echo 19) DogfoodDevMain (MS Internal Use Only), ea4a4090-de26-49d7-93c1-91bff9e53fc3
echo 20) Semi-Annual Channel (Targeted) [Dogfood], 834504cc-dc55-4c6d-9e71-e024d0253f6d
echo 21) Semi-Annual Channel [Dogfood], c4a7726f-06ea-48e2-a13a-9d78849eb706
echo 22) Microsoft Elite [Microsoft], b61285dd-d9f7-41f2-9757-8f61cba4e9c8
echo+
echo **************************
echo Q) Exit
echo+
::Menu Choose Option Code
set /p userinpf= ^> Select Option :
::set userinpf=%userinpf:~0,1%
::выбор FFN
if /i "%userinpf%"=="1" set "ffnx=Current (Retail/RTM), 492350f6-3a01-4f97-b9c0-c7c6ddf67d60"
if /i "%userinpf%"=="2" set "ffnx=Monthly Enterprise, 55336b82-a18d-4dd6-b5f6-9e5095c314a6"
if /i "%userinpf%"=="3" set "ffnx=Semi-Annual Enterprise (Business), 7ffbc6bf-bc32-4f92-8982-f9dd17fd3114"
if /i "%userinpf%"=="4" set "ffnx=Semi-Annual Channel (Targeted) [Microsoft], 9a3b7ff2-58ed-40fd-add5-1e5158059d1c"
if /i "%userinpf%"=="5" set "ffnx=Semi-Annual Channel [Microsoft], f4f024c8-d611-4748-a7e0-02b6e754c0fe"
if /i "%userinpf%"=="6" set "ffnx=Microsoft_LTSC2021, 86752282-5841-4120-ac80-db03ae6b5fdb"
if /i "%userinpf%"=="7" set "ffnx=Insiders_LTSC2024, 20481f5c-c268-4624-936c-52eb39ddbd97"
if /i "%userinpf%"=="8" set "ffnx=Microsoft_LTSC2024, c02d8fe6-5242-4da8-972f-82ee55e00671"
if /i "%userinpf%"=="9" set "ffnx=Office 2024 Perpetual Enterprise, 7983bac0-e531-40cf-be00-fd24fe66619c"
if /i "%userinpf%"=="10" set "ffnx=Office 2021 Perpetual Enterprise, 5030841d-c919-4594-8d2d-84ae4f96e58e"
if /i "%userinpf%"=="11" set "ffnx=Monthly Channel [Microsoft], 5462eee5-1e97-495b-9370-853cd873bb07"
if /i "%userinpf%"=="12" set "ffnx=Office 2019 Perpetual Enterprise, f2e724c1-748f-4b47-8fb8-8e0d210e9208"
if /i "%userinpf%"=="13" set "ffnx=Office 2019 Perpetual Enterprise [Microsoft], 1d2d2ea6-1680-4c56-ac58-a441c8c24ff9"
if /i "%userinpf%"=="14" set "ffnx=CurrentPreview (Office Insider SLOW), 64256afe-f5d9-4f86-8936-8840a6a4f5be"
if /i "%userinpf%"=="15" set "ffnx=BetaChannel (Office Insider FAST), 5440fd1f-7ecb-4221-8110-145efaa6372f"
if /i "%userinpf%"=="16" set "ffnx=SemiAnnualPreview (Business Insider), b8f9b850-328d-4355-9145-c59439a0c4cf"
if /i "%userinpf%"=="17" set "ffnx=Office 2019 Perpetual Enterprise (Insiders), 2e148de9-61c8-4051-b103-4af54baffbb4"
if /i "%userinpf%"=="18" set "ffnx=Monthly Channel [Dogfood], f3260cf1-a92c-4c75-b02e-d64c0a86a968"
if /i "%userinpf%"=="19" set "ffnx=DogfoodDevMain (MS Internal Use Only), ea4a4090-de26-49d7-93c1-91bff9e53fc3"
if /i "%userinpf%"=="20" set "ffnx=Semi-Annual Channel (Targeted) [Dogfood], 834504cc-dc55-4c6d-9e71-e024d0253f6d"
if /i "%userinpf%"=="21" set "ffnx=Semi-Annual Channel [Dogfood], c4a7726f-06ea-48e2-a13a-9d78849eb706"
if /i "%userinpf%"=="22" set "ffnx=Microsoft Elite [Microsoft], b61285dd-d9f7-41f2-9757-8f61cba4e9c8"
::возврат в меню
if /i "%userinpf%"=="Q" goto :Menu
goto :Menu
:w
set userinpw=
cls
Echo -------------------------------------------------------------------
Echo Download_Office_last_version
Echo -------------------------------------------------------------------
Echo+
echo WINRED %winred%
:: Для какой редакции Windows. "Default" - Windows 10-11, "Win8.1" - Windows 8.1, "Win7" - Windows 7
::set "winred=Default"
Echo+
echo **************************
echo+
echo D) Set Default - Windows 10-11
echo 8) Set Win8.1 - Windows 8.1
echo 7) Set Win7 - Windows 7
echo+
echo **************************
echo Q) Exit
echo+
::Menu Choose Option Code
set /p userinpw= ^> Select Option :
set userinpw=%userinpw:~0,1%
::выбор Default
if /i "%userinpw%"=="D" set "winred=Default"
::выбор Win8.1
if /i "%userinpw%"=="8" set "winred=Win8.1"
::выбор Win7
if /i "%userinpw%"=="7" set "winred=Win7"
::возврат в меню
if /i "%userinpw%"=="Q" goto :Menu
goto :Menu
:a
set userinpa=
cls
Echo -------------------------------------------------------------------
Echo Download_Office_last_version
Echo -------------------------------------------------------------------
Echo+
echo ARCH %arch%
:: Разрядность 64 или 32
::set arch=64
Echo+
echo **************************
echo+
echo 6) Set x64
echo 8) Set x86
echo A) Set All пока в тесте
echo+
echo **************************
echo Q) Exit
echo+
::Menu Choose Option Code
set /p userinpa= ^> Select Option :
set userinpa=%userinpa:~0,1%
::выбор x64
if /i "%userinpa%"=="6" set "arch=64"
::выбор x86
if /i "%userinpa%"=="8" set "arch=32"
::выбор x86
if /i "%userinpa%"=="A" set "arch=All"
::возврат в меню
if /i "%userinpa%"=="Q" goto :Menu
goto :Menu
:l
set userinpl=
cls
Echo -------------------------------------------------------------------
Echo Download_Office_last_version
Echo -------------------------------------------------------------------
Echo+
echo LANG %lang%
:: язык
::set lang=ru-ru
Echo+
echo **************************
echo+
echo 1) en-us 11) es-es 21) it-it 31) pt-br 41) zh-cn
echo 2) ru-ru 12) et-ee 22) ja-jp 32) pt-pt 42) zh-tw
echo 3) uk-ua 13) fi-fi 23) kk-kz 33) ro-ro
echo 4) ar-sa 14) fr-fr 24) ko-kr 34) sk-sk
echo 5) bg-bg 15) he-il 25) lt-lt 35) sl-si
echo 6) cs-cz 16) hi-in 26) lv-lv 36) sv-se
echo 7) da-dk 17) hr-hr 27) ms-my 37) th-th
echo 8) de-de 18) hu-hu 28) nb-no 38) tr-tr
echo 9) el-gr 19) hy-am 29) nl-nl 39) tt-ru
echo 10) en-gb 20) id-id 30) pl-pl 40) vi-vn
echo
echo+
echo **************************
echo Q) Exit
echo+
::Menu Choose Option Code
set /p userinpl= ^> Select Option :
::set userinpl=%userinpl:~0,1%
if /i "%userinpl%"=="1" set "lang=en-us"
if /i "%userinpl%"=="2" set "lang=ru-ru"
if /i "%userinpl%"=="3" set "lang=uk-ua"
if /i "%userinpl%"=="4" set "lang=ar-sa"
if /i "%userinpl%"=="5" set "lang=bg-bg"
if /i "%userinpl%"=="6" set "lang=cs-cz"
if /i "%userinpl%"=="7" set "lang=da-dk"
if /i "%userinpl%"=="8" set "lang=de-de"
if /i "%userinpl%"=="9" set "lang=el-gr"
if /i "%userinpl%"=="10" set "lang=en-gb"
if /i "%userinpl%"=="11" set "lang=es-es"
if /i "%userinpl%"=="12" set "lang=et-ee"
if /i "%userinpl%"=="13" set "lang=fi-fi"
if /i "%userinpl%"=="14" set "lang=fr-fr"
if /i "%userinpl%"=="15" set "lang=he-il"
if /i "%userinpl%"=="16" set "lang=hi-in"
if /i "%userinpl%"=="17" set "lang=hr-hr"
if /i "%userinpl%"=="18" set "lang=hu-hu"
if /i "%userinpl%"=="19" set "lang=hy-am"
if /i "%userinpl%"=="20" set "lang=id-id"
if /i "%userinpl%"=="21" set "lang=it-it"
if /i "%userinpl%"=="22" set "lang=ja-jp"
if /i "%userinpl%"=="23" set "lang=kk-kz"
if /i "%userinpl%"=="24" set "lang=ko-kr"
if /i "%userinpl%"=="25" set "lang=lt-lt"
if /i "%userinpl%"=="26" set "lang=lv-lv"
if /i "%userinpl%"=="27" set "lang=ms-my"
if /i "%userinpl%"=="28" set "lang=nb-no"
if /i "%userinpl%"=="29" set "lang=nl-nl"
if /i "%userinpl%"=="30" set "lang=pl-pl"
if /i "%userinpl%"=="31" set "lang=pt-br"
if /i "%userinpl%"=="32" set "lang=pt-pt"
if /i "%userinpl%"=="33" set "lang=ro-ro"
if /i "%userinpl%"=="34" set "lang=sk-sk"
if /i "%userinpl%"=="35" set "lang=sl-si"
if /i "%userinpl%"=="36" set "lang=sv-se"
if /i "%userinpl%"=="37" set "lang=th-th"
if /i "%userinpl%"=="38" set "lang=tr-tr"
if /i "%userinpl%"=="39" set "lang=tt-ru"
if /i "%userinpl%"=="40" set "lang=vi-vn"
if /i "%userinpl%"=="41" set "lang=zh-cn"
if /i "%userinpl%"=="42" set "lang=zh-tw"
::возврат в меню
if /i "%userinpl%"=="Q" goto :Menu
goto :Menu
:start
for /f "tokens=1,2 delims=," %%a in ("%ffnx%") do (
set "ffn=%%b")
set ffn=%ffn:~1,60%
set ffn=%ffn: =%
echo FFN "%ffn%"
echo WINRED "%winred%"
echo ARCH "%arch%"
echo LANG "%lang%"
pause
::goto :Menu
set "aria2ver=release-1.37.0"
set "aria2folder=aria2-1.37.0-win-32bit-build1"
cd /d %~dp0
powershell -nop -command "& { (New-Object Net.WebClient).DownloadFile('https://mrodevicemgr.officeapps.live.com/mrodevicemgrsvc/api/v2/C2RReleaseData', '%tmp%\ver.txt') }" >nul 2>&1
if NOT EXIST "%tmp%\ver.txt" powershell -nop -c "$Tls12 = [Enum]::ToObject([System.Net.SecurityProtocolType], 3072); [System.Net.ServicePointManager]::SecurityProtocol = $Tls12; (New-Object Net.WebClient).DownloadFile('https://mrodevicemgr.officeapps.live.com/mrodevicemgrsvc/api/v2/C2RReleaseData','%tmp%\ver.txt')" >nul 2>&1
if EXIST "%tmp%\ver.txt" (
setlocal enabledelayedexpansion
set i=0& set j=0
for /f "tokens=1,2 delims=: " %%a in (%tmp%\ver.txt) do (
if "%%a"==""Name"" if "%%b"==""!winred!"," set i=1
if "%%a"==""Id"" set i=0& set j=0
if "!i!"=="1" if "%%a"==""FFN"" if "%%b"==""!ffn!"," set j=1
if "!j!"=="1" if "%%a"==""AvailableBuild"" set ver=%%b& goto next
)
) else goto :eof
:next
setlocal disabledelayedexpansion
if not defined ver echo AvailableBuild not found& pause& goto :eof
set ver=%ver:~1,-2%
echo Required version: %ver%
set "array=ar-sa,1025,bg-bg,1026,zh-cn,2052,zh-tw,1028,hr-hr,1050,cs-cz,1029,da-dk,1030,nl-nl,1043,en-us,1033,et-ee,1061,fi-fi,1035,fr-fr,1036,de-de,1031,el-gr,1032,he-il,1037,hi-in,1081,hu-hu,1038,id-id,1057,it-it,1040,ja-jp,1041,kk-kz,1087,ko-kr,1042,lv-lv,1062,lt-lt,1063,ms-my,1086,nb-no,1044,pl-pl,1045,pt-br,1046,pt-pt,2070,ro-ro,1048,ru-ru,1049,sk-sk,1051,sl-si,1060,es-es,3082,sv-se,1053,th-th,1054,tr-tr,1055,uk-ua,1058,vi-vn,1066,tt-ru,1092,hy-am,1067,en-gb,2057,"
setlocal enabledelayedexpansion
:lang
for /f "tokens=1,2 delims=," %%a in ("!array!") do (if %%a==%lang% set langс=%%b)
if not defined langс set array=%array:~11,510%& goto :lang
if not defined langс goto :eof
setlocal disabledelayedexpansion
echo Loading aria2...
2>nul (rd /q/s "%tmp%\aria2tmp"& del /f/a/q "%tmp%\aria2tmp"& del /f/a/q "%tmp%\ver.txt"& md "%tmp%\aria2tmp")&& cd /D "%tmp%\aria2tmp"|| (pause& goto :eof)
curl -LO# https://github.com/aria2/aria2/releases/download/%aria2ver%/%aria2folder%.zip >nul 2>&1
if NOT EXIST "%tmp%\aria2tmp\%aria2folder%.zip" (
powershell -nop -command "& { (New-Object Net.WebClient).DownloadFile('https://github.com/aria2/aria2/releases/download/%aria2ver%/%aria2folder%.zip', '%tmp%\aria2tmp\%aria2folder%.zip') }" >nul 2>&1
if NOT EXIST "%tmp%\ver.txt" powershell -nop -c "$Tls12 = [Enum]::ToObject([System.Net.SecurityProtocolType], 3072); [System.Net.ServicePointManager]::SecurityProtocol = $Tls12; (New-Object Net.WebClient).DownloadFile('https://github.com/aria2/aria2/releases/download/%aria2ver%/%aria2folder%.zip','%tmp%\aria2tmp\%aria2folder%.zip')" >nul 2>&1
)
powershell -nop -c Expand-Archive -LiteralPath '%tmp%\aria2tmp\%aria2folder%.zip' -DestinationPath '%tmp%\aria2tmp' >nul 2>&1
if NOT EXIST "%tmp%\aria2tmp\%aria2folder%" (
call :unziparch
cscript /Nologo j_unzip.vbs "%aria2folder%.zip" >nul 2>&1
)
set url=http://officecdn.microsoft.com.edgesuite.net/DB/%ffn%/Office/Data
set "a2c=%tmp%\aria2tmp\%aria2folder%\aria2c.exe"
set "a2cp= -Z -R -s10 -x10 -c --file-allocation=trunc --summary-interval=0 --console-log-level=error "
cd /d %~dp0
set "archx=%arch%"
if %arch% == 32 set "archx=86"
%a2c%%a2cp% -dOffice\Data %url%/v%arch%.cab %url%/v%arch%_%ver%.cab
%a2c%%a2cp% -dOffice\Data\%ver% ^
%url%/%ver%/sp%arch%%langс%.cab ^
%url%/%ver%/stream.x%archx%.%lang%.proof.dat.cat ^
%url%/%ver%/stream.x%archx%.%lang%.proof.dat ^
%url%/%ver%/a%arch%0_exp.cab ^
%url%/%ver%/i%arch%%langс%.cab ^
%url%/%ver%/s%arch%%langс%.cab ^
%url%/%ver%/stream.x%archx%.%lang%.dat ^
%url%/%ver%/stream.x%archx%.%lang%.dat.cat ^
%url%/%ver%/i%arch%0.cab ^
%url%/%ver%/i%arch%0.cab.cat ^
%url%/%ver%/s%arch%0.cab ^
%url%/%ver%/stream.x%archx%.x-none.dat ^
%url%/%ver%/stream.x%archx%.x-none.dat.cat
if %arch% == 32 (
%a2c%%a2cp% -dOffice\Data\%ver% ^
%url%/%ver%/i640.cab ^
%url%/%ver%/i64%langс%.cab ^
%url%/%ver%/a640_exp.cab ^
%url%/%ver%/i640.cab.cat
)
echo %ffn%>Office\Data\branch.txt
del /Q /F "%tmp%\ver.txt" >nul 2>&1
rd /Q /S "%tmp%\aria2tmp" >nul 2>&1
timeout /t 5
goto :Menu
::------------------------------- END ------------------------------
:unziparch
:: This script upzip's files...
> j_unzip.vbs ECHO '
>> j_unzip.vbs ECHO ' UnZip a file script
>> j_unzip.vbs ECHO '
>> j_unzip.vbs ECHO ' It's a mess, I know!!!
>> j_unzip.vbs ECHO '
>> j_unzip.vbs ECHO.
>> j_unzip.vbs ECHO ' Dim ArgObj, var1, var2
>> j_unzip.vbs ECHO Set ArgObj = WScript.Arguments
>> j_unzip.vbs ECHO.
>> j_unzip.vbs ECHO If (Wscript.Arguments.Count ^> 0) Then
>> j_unzip.vbs ECHO. var1 = ArgObj(0)
>> j_unzip.vbs ECHO Else
>> j_unzip.vbs ECHO. var1 = ""
>> j_unzip.vbs ECHO End if
>> j_unzip.vbs ECHO.
>> j_unzip.vbs ECHO If var1 = "" then
>> j_unzip.vbs ECHO. strFileZIP = "example.zip"
>> j_unzip.vbs ECHO Else
>> j_unzip.vbs ECHO. strFileZIP = var1
>> j_unzip.vbs ECHO End if
>> j_unzip.vbs ECHO.
>> j_unzip.vbs ECHO 'The location of the zip file.
>> j_unzip.vbs ECHO REM Set WshShell = CreateObject("Wscript.Shell")
>> j_unzip.vbs ECHO REM CurDir = WshShell.ExpandEnvironmentStrings("%%cd%%")
>> j_unzip.vbs ECHO Dim sCurPath
>> j_unzip.vbs ECHO sCurPath = CreateObject("Scripting.FileSystemObject").GetAbsolutePathName(".")
>> j_unzip.vbs ECHO strZipFile = sCurPath ^& "\" ^& strFileZIP
>> j_unzip.vbs ECHO 'The folder the contents should be extracted to.
>> j_unzip.vbs ECHO outFolder = sCurPath ^& "\"
>> j_unzip.vbs ECHO.
>> j_unzip.vbs ECHO. WScript.Echo ( "Extracting file " ^& strFileZIP)
>> j_unzip.vbs ECHO.
>> j_unzip.vbs ECHO Set objShell = CreateObject( "Shell.Application" )
>> j_unzip.vbs ECHO Set objSource = objShell.NameSpace(strZipFile).Items()
>> j_unzip.vbs ECHO Set objTarget = objShell.NameSpace(outFolder)
>> j_unzip.vbs ECHO intOptions = 256
>> j_unzip.vbs ECHO objTarget.CopyHere objSource, intOptions
>> j_unzip.vbs ECHO.
>> j_unzip.vbs ECHO. WScript.Echo ( "Extracted." )
>> j_unzip.vbs ECHO.
exit /b
:theend