Как правильно передать аргументы в функцию? [Партии]

720
Pavel Fedorov

Я написал себе скрипт, который будет загружать плейлист.
Но у меня два вопроса, и я не знаю, как их решить.

  • Почему я получаю сообщение об ошибке, если я ввести ссылку формы:
    https://www.youtube.com/playlist?list=PL38DFE33C78765533,
    я узнал, что присвоение идет не так, он делит строку на
    https://www.youtube.com/playlist?listи PL38DFE33C78765533. Как заставить это работать?
  • Почему аргумент DOWNPATHLIST неправильно передан?

SET DOWNPATHLIST= "%%(playlist_index)s - %%(title)s.%%(ext)s" SET CACHDIR= ".cache" SET /P id= Please, Enter ID or Link: CALL :YOUTUBEDOWN %id%, "-f bestvideo[ext!=webm]??+bestaudio[ext!=webm]??/best[ext!=webm]", "-o %%DOWNPATHLIST%%"  :YOUTUBEDOWN youtube-dl --cache-dir %CACHDIR% %~1 %~2 %~3 %~4 %~5 PAUSE 
0

1 ответ на вопрос

0
LotPings

Проблемы частично возникают из

  • непоследовательное использование двойных кавычек и
  • необходимость избегать %признаков того, что их нельзя интерпретировать как обозначение переменной путем их удвоения %%. Но каждый раз, когда cmd.exe анализирует набор / вызов строки, он сокращает два %%к одному %.
  • Также знак равенства разделяет аргументы командной строки (например,; tab) и удаляется.

Попробуй это:

SET "DOWNPATHLIST=%%(playlist_index)s - %%(title)s.%%(ext)s" SET "CACHDIR=.cache" SET /P "id=Please, Enter ID or Link:" CALL :YOUTUBEDOWN %id%, "-f bestvideo[ext!=webm]??+bestaudio[ext!=webm]??/best[ext!=webm]", "-o %%DOWNPATHLIST%%" Pause Goto :Eof :YOUTUBEDOWN youtube-dl --cache-dir %CACHDIR% %* PAUSE 

%*Разрешит все аргументы, переданные без изменений. Для проверки вы можете временно добавить youtube-dlэхо.

Спасибо, это было проще, чем я думал. Я не знал, что можно использовать кавычки в этой форме. Pavel Fedorov 5 лет назад 0
Что ж, похоже, это характерно для youtube-dl, попробуйте без пробела после `-o %% DOWNPATHLIST %%` LotPings 5 лет назад 0
нет, так не получается. Я уже понял, изменил с `" -o %% DOWNPATHLIST %% "` на `-o" %% DOWNPATHLIST %% "`, и это работает для меня. Pavel Fedorov 5 лет назад 1