【问题标题】:How to specify parameters with spaces when starting a new process启动新进程时如何用空格指定参数
【发布时间】:2011-10-19 16:49:06
【问题描述】:

我想用参数运行一个进程:文件名。

    string parms =  filechooser.Filename ;      
    psi = new ProcessStartInfo("timidity", parms);

当用户选择带有一些空格的文件名时会出现问题。 我可以用“”传递参数吗?

谢谢

【问题讨论】:

    标签: c# .net parameter-passing


    【解决方案1】:

    您可以将值用双引号括起来:

    string parameters = string.Format("\"{0}\"", filechooser.Filename);
    psi = new ProcessStartInfo("timidity", parameters);
    

    【讨论】:

      【解决方案2】:

      应该没问题,空格也会被传递。

      但是,如果您想转义文件名(这取决于正在启动的应用程序,即胆小),请执行以下操作:

      string parms = string.Format("\"{0}\"", filechooser.Filename);
      psi = new ProcessStartInfo("timidity", parms);
      

      这将创建一个基于\"{0}\" 格式的字符串。 \" 变为引号 ("),{0} 将替换为格式字符串后的第一个参数,即文件名。

      您可以使用“开始”、“运行”功能或命令提示符 (cmd.exe) 进行尝试。输入 timidity 然后你的完整文件名,带空格,用引号括起来,看看是否有效:

      timidity "my filename"
      

      【讨论】:

        【解决方案3】:

        试试这个。

        string parms =  filechooser.Filename ;      
        psi = new ProcessStartInfo("timidity", "\"" + parms + "\"");
        

        【讨论】:

          【解决方案4】:

          反斜杠是你的朋友:

          "\"timidity\""
          

          【讨论】:

          • 不,是文件名有空格,而不是要启动的程序(“胆小”里面没有空格)
          猜你喜欢
          • 1970-01-01
          • 2022-10-21
          • 2011-08-11
          • 2010-10-22
          • 2017-06-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多