【发布时间】:2011-10-19 16:49:06
【问题描述】:
我想用参数运行一个进程:文件名。
string parms = filechooser.Filename ;
psi = new ProcessStartInfo("timidity", parms);
当用户选择带有一些空格的文件名时会出现问题。 我可以用“”传递参数吗?
谢谢
【问题讨论】:
标签: c# .net parameter-passing
我想用参数运行一个进程:文件名。
string parms = filechooser.Filename ;
psi = new ProcessStartInfo("timidity", parms);
当用户选择带有一些空格的文件名时会出现问题。 我可以用“”传递参数吗?
谢谢
【问题讨论】:
标签: c# .net parameter-passing
您可以将值用双引号括起来:
string parameters = string.Format("\"{0}\"", filechooser.Filename);
psi = new ProcessStartInfo("timidity", parameters);
【讨论】:
应该没问题,空格也会被传递。
但是,如果您想转义文件名(这取决于正在启动的应用程序,即胆小),请执行以下操作:
string parms = string.Format("\"{0}\"", filechooser.Filename);
psi = new ProcessStartInfo("timidity", parms);
这将创建一个基于\"{0}\" 格式的字符串。 \" 变为引号 ("),{0} 将替换为格式字符串后的第一个参数,即文件名。
您可以使用“开始”、“运行”功能或命令提示符 (cmd.exe) 进行尝试。输入 timidity 然后你的完整文件名,带空格,用引号括起来,看看是否有效:
timidity "my filename"
【讨论】:
试试这个。
string parms = filechooser.Filename ;
psi = new ProcessStartInfo("timidity", "\"" + parms + "\"");
【讨论】:
反斜杠是你的朋友:
"\"timidity\""
【讨论】: