&安培;运算符字符串错误,包含processStartInfo的参数字符串

时间:2015-04-24 16:29:13

标签: vb.net operator-keyword string-concatenation processstartinfo

我需要将一个字符串传递给ffmpeg的ProcessStartInfo,以便我可以调用dim.Argument并让它在解析文件时附加代码中的字符串和变量。

我有movedFileInfo代码看到的当前filename.mp3,但它不允许我使用&运算符将其附加到字符串... help?

我知道可能还有另外一种方法可以在单独的函数中使用ffmpeg命令来简单地使用" for"来循环遍历目录。但我还没有找到一个成功的命令来运行我的ffmpeg.exe,也没有在Windows中运行ffprompt。当我写merge.txt时,我还需要附加一个回车,但是找不到一个例子......我是vba的新手。

这些命令有效,但是vba抱怨我的字符串中的&运算符错误为The operator '&' is not defined for types 'String' and 'System.IO.FileInfo'

所以我理解的是,我传入psi.Arguments的字符串并不像我发送一个字符串和使用{{1附加的变量这样的事实运算符...我只是使用逗号或如何将变量&附加到ffmpeg -i? movedFileInfo在上面被定义为ProcessStartInfo ...所以我不确定vb识别它的类型...我还没有找到关于ProcessStartInfo的信息来启动我的ffmpeg exe。

见下面的代码:

psi

1 个答案:

答案 0 :(得分:2)

问题是VB中的&运算符仅用于连接System.String个对象。它比使用+连接更严格。您无法使用它将StringSystem.IO.FileInfo对象连接在一起。你想要的是从FileInfo对象获取文件名。它有一个属性FileInfo.FullName,它将从documentation返回String文件的完整路径。

尝试改为:

For Each foundFile As String In My.Computer.FileSystem.GetFiles(video_card_dir, Microsoft.VisualBasic.FileIO.SearchOption.SearchAllSubDirectories, "*.MTS")
    Dim movedFileInfo As New System.IO.FileInfo(foundFile)
    psi.Arguments = "ffmpeg -i " & movedFileInfo.FullName & " -vcodec -c libx264 " & movedFileInfo.FullName & ".mp4"
    psi.ToString()
    proc = Process.Start(psi)
Next

如果您想将.mts扩展名替换为.mp4,而不是像此代码那样简单地追加.mp4,请参阅this question