Я передаю строковые литералы моему скрипту powershell следующим образом:
var spawn = require("child_process").spawn,
child;
child = spawn("powershell.exe", [
"./scripts/ffmpeg_convert.ps1",
`./cache/videos/${tempFileName + "."}${videoType}`,
` ./cache/converted_videos/${tempFileName + "."}${videoType}`
]);
Где spawn является частью node.js Spawn
И мой Сценарий powershell выглядит следующим образом:
param(
[string]$originFile = $Args[0],
[string]$outputFile = $Args[1]
)
echo "Moving moov atom"
ffmpeg -i $originFile -vcodec copy -acodec copy -movflags +faststart $outputFile
Но сценарий не будет выполняться с аргументом
./cache/videos/${tempFileName + "."}${videoType}
Однако, если я изменюаргумент для литеральной строки, скажем ./cache/videos/inputVideo.mov
, он выполняется просто отлично.
Это действительно заставляет меня чесать голову.
Я создал два тестовых сценария, которые работают с одним и тем же принципалом ... Так это просто способ перевода ${tempFileName + "."}${videoType}
?И с учетом сказанного, если я повторю аргументы, они соответствуют ожиданиям.
Сценарий 1
./convert_videos.ps1 ./inputVideo.mov outputVideo.mov
Сценарий 2
param(
[string]$originFile = $Args[0],
[string]$outputFile = $Args[1]
)
echo "Moving moov atom"
ffmpeg -i $originFile -vcodec copy -acodec copy -movflags +faststart $outputFile