関数に引数を正しく渡す方法は?[バッチ]


0

自分でプレイリストをダウンロードするスクリプトを書きました。
しかし、2つの質問があり、それらを解決する方法がわかりません。

  • 私は、フォームのリンクを入力すると、なぜエラーが出るん
    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

問題は部分的に発生します

  • 二重引用符の不必要な使用と
  • %記号をエスケープして、変数を表すものとして解釈しないようにする必要があります%%。ただし、cmd.exeは行セット/呼び出しを解析するたびに2 %%から1 に減少し%ます。
  • また、等号はコマンドライン引数(、; 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エコーを追加します。


ありがとう、思ったより簡単だった。この形式で引用符を使用できることを知りませんでした。
パベルフェドロフ

それはyoutube-dlに固有のようです。次のスペースなしで試してください-o%%DOWNPATHLIST%%
LotPings

1
いいえ、そのようには機能しません。私はすでに理解し、から"-o %%DOWNPATHLIST%%"に変更しました-o "%%DOWNPATHLIST%%"
パベルフェドロフ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.