Перейти к содержимому

Не может запустить программу с аргументом в кавычках из скрипта, но может запустить его прямо из командной строки

1

У меня есть этот скрипт (на который есть псевдоним 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) 

Что дает? Как это работает в командной строке, но не в сценарии?

275 просмотров
Vegard спросил 9 лет назад
V 256

0 ответов