在我的命令行中,我按照ffmpeg -f dshow i video="Integrated Camera" c:\test.mp4
我想在powershell中做同样的事情。 我试过了:
$args = " -f dshow i video='Integrated Camera' c:\test.mp4"
Start-Process -FilePath ffmpeg.exe -ArgumentList $args
我试过了:
$args = " -f dshow i video=\"Integrated Camera\" c:\test.mp4"
Start-Process -FilePath ffmpeg.exe -ArgumentList $args
但两种情况都不会启动ffmpeg。
你能告诉我怎样才能把“放在我的手中?”
谢谢。
答案 0 :(得分:0)
我首先要提醒的是,Start-Process可能不是您想要的,这将在新的命令窗口(cmd)中打开一个新进程。 我鼓励您阅读以下博客文章 http://edgylogic.com/blog/powershell-and-external-commands-done-right/
然而,有几种方法可以逃避报价。在字符串中包含双引号的一种方法是使用单引号来封装整个字符串,例如:
$String = 'video="Integrated Camera"'
或者你可以用反引号逃脱
$String = "video=`"Integrated Camera`""
另一种方法是使用双"
$String = "video=""Integrated Camera"""
您选择的方法将取决于个人偏好和代码的可读性。 值得注意的是-ArgumentsList需要一个字符串数组。
将这两种方法包装起来会给你一些东西:
$exe = "ffmpeg.exe"
$ffmpefArguments= "-f dshow i video=`"Integrated Camera`" c:\test.mp4"
&$exe $ffmpefArguments