为什么PowerShell在执行我的命令之前会关闭ff-prompt.bat



好的,好家好像我还有另一个问题要问,这与我的最后一个问题有关,这可以在此处找到:如何使用Windows PowerShell启动FFProbe。在那儿,我问了如何使用Windows PowerShell启动FFProbe,在尝试了一些东西之后,我得到了一些东西,可以说,开始了一秒钟,然后再关闭。我在PowerShell中使用以下命令尝试了一下:

$env:Path = ';C:UsersAdministratorbin'
$title = "A_Day_for_Cake_and_Accidents"
Start-Process ff-prompt.bat -ArgumentList "ffprobe -show_streams -select_streams v -print_format xml -count_frames C:UsersAdministratorDesktopdcp_bearbeitet$title$title.mov > C:UsersAdministratorDesktopdcp_bearbeitet$titletotalframes.xml"

结果,这是奇怪的是XML文件,仅具有ff-prompt.bat的标准文本,看起来像这样:

c: users indercancrator> echo off FFMPEG版本N-60959-G669043D 建立于2014年2月27日22:01:58,GCC 4.8.2(GCC) 配置: - enable-gpl - enable-version3 - 可访问w32threads -enable-avisynth - enable-avisynth - enable-bzlib - enable-enable-fontConfig -eenable-enable-enable-freii0r-enable-enable-gnutls -eenable-iConv-enable-iconv--libass - 可启用libbluray -enable-libcaca- enable-libfreetype-enable-libgsm- enable-enable-libilbc-- enable-enable-libmodplug-enable-enable-enable-enable-libmp3lame-可启用libopencore-ableable-libopencore-amrnb-able-ableable-libopencore-libopencore-libopencore-libopencore-nobleAMRWB - 可启用libopenjpeg -enable-libopus-enable-librtmp- enable-enable-libschroedinger-enable-enable-libsoxr - enable-libspeex-- enable-libspeex - enable-enable-libTheora-可启用 - 可启用 - 可启用 - 可启用 - 可启用 - 可启用 - 可启用 - 可启用 - libvo-aAcenc-可启用libvo-amrwbenc-可启用libvorbis -enable-enable-libvpx-可启用libwavpack- enable-enable-libx264-可启用libx265-可启用 - 可启用 - 可启用libxavs-可启用 - 可启用 - 可启用 - 可启用 - nable-libxvid-enable-enable-enable-enable-enable-enable-zlib libavutil 52. 66.100/52. 66.100 libavcodec 55. 52.102/55. 52.102 libavformat 55. 33.100/55. 33.100 libavdevice 55. 10.100/55. 10.100 libavfilter 4. 2.100/4. 2.100 libswscale 2. 5.101/2. 5.101 libswresample 0. 18.100/0。18.100 libpostProc52。3.100/52. 3.100 为了帮助运行:ffmpeg -h 对于运行格式:ffmpeg -formats |更多的 对于编解码器:ffmpeg -codecs |更多的 当前目录现在是:" C: Users Administrator bin" bin目录已添加到路径

我的第一个想法是,它根本没有起作用,但是后来我想知道为什么我根本不起作用时会得到一个XML文件。PowerShell执行ff-prompt.bat大概一秒钟,然后PowerShell在不执行一半命令的情况下再次关闭ff-prompt.bat。有人知道为什么FF-Prompt在执行我的所有命令之前关闭?

编辑:所以我尝试的是应该直接执行它的东西,但实际上我会遇到很多错误:

$title = "A_Day_for_Cake_and_Accidents"
$Cmd = ‘C:UsersAdministratorffmpegbinffprobe.exe’
$Arg1 = ’ffprobe '
$Arg2 = ‘-show_streams ’
$Arg3 = ‘-select_streams v '
$Arg4 = ‘-print_format xml '
$Arg5 = ‘-count_frames '
$Arg6 = "C:UsersAdministratorDesktopdcp_bearbeitet$title$title.mov >"
$Arg7 = " C:UsersAdministratorDesktopdcp_bearbeitet$titletotalframes.xml"
& $Cmd $Arg1 $Arg2 $Arg3 $Arg4 $Arg5 $Arg6 $Arg7

错误消息我得到:

" ffprobe.exe无法设置值'-select_streams v'for Option'show_streams':找不到选项

我现在面临的问题是-show_streams没有获得值,所以也许这就是他将下一个参数用作值的原因,我可以做什么?

以下对我有用:

$ title =" a_day_for_cake_and_accidents"$ inputfile =" c: users  thermandator  desktop  dcp_bearbeitet  $ title  $ title.mov"美元&。 bin  ffprobe.exe -show_streams -select_streams v -print_format xml -count_frames -loglevel quite quiet $ inputfile |超出文件$ outputfile

我应该已经意识到'-Select_streams v'计数2命令行参数,因此将它们包装在单个参数中将不起作用。

我删除了'>'重定向并添加了| out-file ....子句。

FFProbe的主要问题是它将其记录信息记录到STDERR频道。Powershell发现了这一点,并引发了NativeCommandError例外。

我尝试使用$ErrorActionPreference = 'stop'try...catch构造捕获NativeCommandError,但是在生成XML输出之前触发了异常。最后,我为ffprobe进行rtfm,并添加了-loglevel quiet参数,该参数停止ffprobe编写任何日志信息。

nb-此代码假定它是从上面的" bin"目录执行的。

假设ffmpeg在c: users ascrisionator ffmpeg中:

$title = "A_Day_for_Cake_and_Accidents"
& C:usersAdministratorffmpegbinffprobe -show_streams -select_streams v -print_format xml -count_frames C:UsersAdministratorDesktopdcp_bearbeitet$title$title.mov > C:UsersAdministratorDesktopdcp_bearbeitet$titletotalframes.xml

最新更新