Wie kann ich Argumente korrekt an eine Funktion übergeben? [Stapel]

791
Pavel Fedorov

Ich habe mir ein Skript geschrieben, das eine Wiedergabeliste herunterlädt.
Aber ich habe zwei Fragen und weiß nicht, wie ich sie lösen soll.

  • Warum erhalte ich einen Fehler, wenn ich einen Link in der Form eingeben:
    https://www.youtube.com/playlist?list=PL38DFE33C78765533,
    Ich fand heraus, dass die Mittel schief geht, teilt er sich die Linie in
    https://www.youtube.com/playlist?listund PL38DFE33C78765533. Wie funktioniert das?
  • Warum wird das Argument DOWNPATHLIST falsch übergeben?

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 Antwort auf die Frage

0
LotPings

Die Probleme ergeben sich teilweise aus

  • nicht konsequente Verwendung von Anführungszeichen und
  • die Notwendigkeit, den %Zeichen zu entgehen, um nicht als eine Variable bezeichnet zu werden, indem man sie verdoppelt %%. Aber jedes Mal, wenn cmd.exe einen Leitungssatz analysiert, reduziert es zwei %%zu eins %.
  • Auch das Gleichheitszeichen teilt Befehlszeilenargumente (wie,; tab) und wird entfernt.

Versuche dies:

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 

Das %*löst alle unverändert übergebenen Argumente auf. Zum Testen können Sie vorübergehend youtube-dlein Echo einfügen .

Danke, es war einfacher als ich dachte. Ich wusste nicht, dass Zitate in diesem Formular verwendet werden können. Pavel Fedorov vor 5 Jahren 0
Nun, das scheint spezifisch für youtube-dl zu sein. Versuchen Sie es ohne Leerzeichen nach dem -o %% DOWNPATHLIST %% ` LotPings vor 5 Jahren 0
nein, so funktioniert das nicht. Ich habe es schon herausgefunden und bin von "-o %% DOWNPATHLIST %%" `zu" -o "%% DOWNPATHLIST %%" `gewechselt und es funktioniert für mich. Pavel Fedorov vor 5 Jahren 1