ไม่สามารถเรียกใช้โปรแกรมที่มีอาร์กิวเมนต์ที่ยกมาจากสคริปต์ แต่สามารถเรียกใช้โปรแกรมได้โดยตรงจากบรรทัดคำสั่ง


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)

สิ่งที่ช่วยให้? มันทำงานอย่างไรในบรรทัดคำสั่ง แต่ไม่ได้อยู่ในสคริปต์?


คุณอาจต้องหลบหนีจากแบ็กสแลชด้วยแบ็กสแลชอีกตัว?
Kinnectus

2
& $ydl $url '--%' $finalArgs. Powershell กล่าวว่ารายการของผลการขัดแย้งในนี้:ไม่มันเป็นสิ่งที่Write-Hostพิมพ์ให้คุณ PowerShell มีตรรกะที่แตกต่างกันเมื่อส่งผ่านอาร์กิวเมนต์ไปยังแอปพลิเคชันดั้งเดิม
PetSerAl

@ PetSerAl แน่ใจว่ามันทำ ขอบคุณ! ส่งเป็นคำตอบหากคุณต้องการคะแนน
Vegard
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.