Não é possível executar o programa com argumento entre aspas do script, mas pode executá-lo diretamente a partir da linha de comando

1

Eu tenho este script (que é alias para ydl no meu perfil):

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

Saída do 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

Ok? Isso é lamentável ... mas e se eu tentar executar diretamente o comando - copiando-o da saída Write-Host do script?

Powershell diz que a lista de argumentos resulta nisso:
D:\youtube-dl\youtube-dl.exe https://www.youtube.com/watch?v=123 --config-location "D:/youtube-dl/config-mp3.txt"

Ok, vamos tentar:

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\MP33.webm
[download] 100% of 2.48MiB in 00:00
[ffmpeg] Destination: D:\youtube-dl\MP33.mp3
Deleting original file D:\youtube-dl\MP33.webm (pass -k to keep)

O que dá? Como funciona na linha de comando, mas não no script?

    
por Vegard 14.06.2017 / 17:48

0 respostas