繁体   English   中英

ProcessStartInfo C#中文件名(不是路径)中的空格

[英]Spaces in file name (not path) in ProcessStartInfo C#

我正在使用C#的ProcessStartInfo运行ffmpeg,其中我必须将文件从一种格式转换为其他格式。这些文件中没有空格的文件可以正常工作,但那些文件中的空格会卡在错误中。我认为这是由于文件名中的空格。 例如

  startInfo.Arguments = "-i " + filename+ ".mov-q:a 0 -map a " + filename+ ".mp4";

filename是在运行时通过分析目录得出的。 典型的容易出错的文件名,例如= =“这是我的文件”

这怎么解决。

您需要将文件名括在引号中:

startInfo.Arguments = "-i \"" + filename+ ".mov\" -q:a 0 -map a \"" +
                      filename + ".mp4\"";

在C#中,使用反斜杠( "\\"" )或在字符串中使用双引号( s = @"text ""quoted"" ..." )来对字符串内的引号进行转义。


考虑使用逐字字符串和C#6字符串插值:

startInfo.Arguments = $@"-i ""{filename}.mov"" -q:a 0 -map a ""{filename}.mp4""";

我认为它更具可读性(但这可能是一种品味问题)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM