【发布时间】:2011-04-13 15:03:58
【问题描述】:
要将带有空格的路径传递给 .NET 控制台应用程序,您应该对其进行转义。可能不是转义而是用双引号括起来:
myapp.exe --path C:\Program Files\MyApp`
变成
new string[] { "--path", "C:\Program", "Files\MyApp" }
但是
myapp.exe --path "C:\Program Files\MyApp"
变成
new string[] { "--path", "C:\Program Files\MyApp" }
它工作正常,您可以轻松解析。
我想用一个附加参数扩展给定的参数集,并使用生成的参数集开始一个新进程:
new ProcessStartInfo(
Assembly.GetEntryAssembly().Location,
String.Join(" ", Enumerable.Concat(args, new[] { "--flag" })))
这变成了myapp.exe --path C:\Program Files\MyApp --flag,路径放弃了它的转义。
如何使用通用解决方案解决它? (无需搜索需要手动转义和引用的每个参数的值)
【问题讨论】:
标签: c# escaping console-application command-line-arguments