启动新进程时如何指定带有空格的参数
我想使用参数运行一个进程:文件名。
string parms = filechooser.Filename ;
psi = new ProcessStartInfo("timidity", parms);
当用户选择带有一些空格的文件名时会出现此问题。 我可以用“”传递参数吗?
谢谢
i would like to run a process with the parameter: filename.
string parms = filechooser.Filename ;
psi = new ProcessStartInfo("timidity", parms);
The problem occur when user choose a filename with some spaces.
Ho can i pass the parameter with the " " ?
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
您可以将该值括在双引号中:
You could wrap the value in double quotes:
这应该可以正常工作,空格也会被传递。
但是,如果您想转义文件名(这取决于正在启动的应用程序,即胆怯),请执行以下操作:
这将创建一个基于格式
\"{0}\"
的字符串。\"
成为引号 ("
),并且{0}
将被替换为格式字符串后的第一个参数,即文件名。您可以使用“开始”、“运行”功能或命令提示符 (
cmd.exe
) 来尝试此操作。输入 timidity 然后输入完整文件名,带空格,用引号引起来,看看是否有效:That should work just fine, the spaces will be passed too.
However if you want to escape the filename (which depends on the app being started, i.e. timidity), do this:
This will create a string based on the format
\"{0}\"
.\"
becomes a quote ("
) and{0}
will be replaced with the first parameter after the format string, i.e. the filename.You can try this out using the Start, Run feature or command prompt (
cmd.exe
). Enter timidity then your full filename, with spaces, in quotes and see if that works:试试这个。
Try this.
反斜杠是你的朋友:
Backslash is your friend: