[英]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.