Como passar corretamente argumentos para uma função? [lote]

0

Eu escrevi para mim um script que baixaria uma lista de reprodução.
Mas tenho duas perguntas e não sei como resolvê-las.

  • Por que recebo um erro se eu inserir um link do formulário:
    https://www.youtube.com/playlist?list=PL38DFE33C78765533 ,
    Descobri que a apropriação está errada, divide a linha em https://www.youtube.com/playlist?list e PL38DFE33C78765533 . Como fazer isso funcionar?
  • Por que o argumento DOWNPATHLIST foi passado incorretamente?
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
    
por Pavel Fedorov 17.05.2018 / 17:39

1 resposta

0

Os problemas surgem em parte de

  • uso inconsequente de aspas duplas e
  • a necessidade de escapar dos sinais % para não ser interpretada como denotando uma variável, dobrando-as em %% . Mas toda vez cmd.exe analisa uma linha set / call reduz em dois %% para um % .
  • Também o sinal de igual divide os argumets da linha de comando (como,; tab) e é removido.

Tente isto:

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

O %* resolverá todos os argumentos aprovados inalterados. Para testar, você pode preceder temporariamente youtube-dl com um eco.

    
por 17.05.2018 / 20:08