Этот скрипт использует функции youtubedl+aria2c для загрузки видео с YouTube.
Невозможно выполнить Вариант 4 для определенного формата. Я создал переменную формат F, которая хранит пользовательский ввод и передает это значение другой переменной DnSelect.
SET DnSelect=--no-check-certificate -f "%formatF%" --external-downloader aria2c --external-downloader-args "-x16 -s16 -k1M
Мой код/скрипт:
@echo off
SET DnBest=--no-check-certificate -f 22 --external-downloader aria2c --external-downloader-args "-x16 -s16 -k1M"
SET DnSelect=--no-check-certificate -f "%formatF%" --external-downloader aria2c --external-downloader-args "-x16 -s16 -k1M"
SET Destination = ""%home%"\%%(title)s.%%(ext)s"
if not -%1-==-- SET URL=%*
if -%1-==-- goto fopNew
:top
CLS
ECHO URL: %URL%
ECHO ----------------------
ECHO Available operations:
ECHO ----------------------
ECHO .
ECHO 1. Best of all
ECHO 2. Check all formats available
ECHO 3. New URI
ECHO 4. Select specific format
ECHO 5. Exit
SET /P operation=Which operation would you like to do?:
if "%operation%"= = "n" goto fopNew
if "%operation%"= = "N" goto fopNew
if "%operation%"= = "1" goto fop1
if "%operation%"= = "2" goto fopFormat
if "%operation%"= = "3" goto :fopNew
if "%operation%"= = "4" goto :fopSelect
if "%operation%"= = "5" goto :fopQuit
:fop1
ECHO Best:
youtube-dl %DnBest% -o %Destination% %URL%
pause
goto top
:fopFormat
ECHO List of all possible formats:
youtube-dl -F %URL%
pause
goto top
:fopSelect
ECHO List of all possible formats:
youtube-dl -F %URL%
ECHO Enter number of desired format from all possible formats:
SET /P formatF=:
ECHO Download selected format:
youtube-dl %DnSelect% -o %Destination% %URL%
pause
goto top
:fopNew
SET /P URL=Enter the video URL:
goto top
:fopQuit
@echo off
Вывод:
ERROR: requested format not available
Я просто хочу выбрать поддерживаемый формат из списка доступных форматов и загрузить его.





Поскольку вы устанавливаете переменные в самом начале, вам нужно экранировать некоторые из ваших символов %:
Set "DnBest=--no-check-certificate -f 22 --external-downloader aria2c --external-downloader-args "-x16 -s16 -k1M""
Set "DnSelect=--no-check-certificate -f "%%formatF%%" --external-downloader aria2c --external-downloader-args "-x16 -s16 -k1M""
Set "Destination = ""%home%"\%%%%(title)s.%%%%(ext)s""
В приведенном выше примере я предположил, что при вызове скрипта переменная %formatF% в это время не определена, поэтому я экранировал в ней символы процента. Я также предположил, потому что он не установлен в предоставленном коде, что переменная %home% предопределена, поэтому я оставил ее заключенной в один процент, (вам нужно будет использовать двойные проценты, если это определено в скрипте, но не показано в вашем фрагменте).
Вы устанавливаете
DnSelectс%formatF%до того, как оно будет определено. Поместите эту строку непосредственно передyoutube-dl %DnSelect% -o %Destination% %URL%