У меня есть этот сценарий (который псевдоним ydl
в моем профиле):
param(
[string]$url,
[switch]$vid=$false
)
$ydl = "D:\youtube-dl\youtube-dl.exe"
$mp3conf = "--config-location `"D:/youtube-dl/config-mp3.txt`""
$vidconf = "--config-location `"D:/youtube-dl/config-mp4.txt`""
$finalArgs = $mp3conf
If ($vid) {
$finalArgs = $vidconf
}
Write-Host $ydl $url $finalArgs
& $ydl $url $finalArgs
Выход Powershell:
PS D:\> ydl https://www.youtube.com/watch?v=c_7Mcb6iLN0
D:\youtube-dl\youtube-dl.exe https://www.youtube.com/watch?v=123 --config-location "D:/youtube-dl/config-mp3.txt"
Usage: youtube-dl.exe [OPTIONS] URL [URL...]
youtube-dl.exe: error: no such option: --config-location D:/youtube-dl/config-mp3.txt
ОК? Это прискорбно ... но что, если я попытаюсь выполнить команду напрямую - скопировать ее из вывода Write-Host
из сценария?
Powershell говорит, что список аргументов приводит к следующему:
D:\youtube-dl\youtube-dl.exe https://www.youtube.com/watch?v=123 --config-location "D:/youtube-dl/config-mp3.txt"
ОК давайте попробуем:
PS D:\> D:\youtube-dl\youtube-dl.exe https://www.youtube.com/watch?v=123 --config-location "D:/youtube-dl/config-mp3.txt"
[youtube] 123: Downloading webpage
[youtube] 123: Downloading video info webpage
[youtube] 123: Extracting video information
[youtube] 123: Downloading MPD manifest
[download] Destination: D:\youtube-dl\MP3\123.webm
[download] 100% of 2.48MiB in 00:00
[ffmpeg] Destination: D:\youtube-dl\MP3\123.mp3
Deleting original file D:\youtube-dl\MP3\123.webm (pass -k to keep)
Что дает? Как это работает в командной строке, но не в сценарии?