命令行-ProcessStartInfo C#中文件名(而非路径)中的空格
本文关键字:路径 空格 -ProcessStartInfo 中文 文件名 命令行 | 更新日期: 2023-09-27 17:57:32
我正在使用C#的ProcessStartInfo运行ffmpeg,在那里我必须将文件从一种格式转换为另一种格式。那些没有空间的文件运行良好,但那些有空间的文件却陷入了错误。我认为这是由于文件名中的空格造成的。例如
startInfo.Arguments = "-i " + filename+ ".mov-q:a 0 -map a " + filename+ ".mp4";
filename是在运行时通过解析目录派生的。典型的易出错文件名,例如is="这是我的文件"
如何解决这一问题。
您需要将文件名用引号括起来:
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""";
我认为它更可读(但这可能是品味的问题)。