У меня есть этот скрипт (на который есть псевдоним 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) Что дает? Как это работает в командной строке, но не в сценарии?
Вам может понадобиться избежать обратной косой черты с помощью другой обратной косой черты?