【问题标题】:System.Diagnostics.Process ArgumentsSystem.Diagnostics.Process 参数
【发布时间】:2009-06-18 12:36:40
【问题描述】:

如何将参数传递给带有空格的 System.Dignostics.Process。我正在这样做:

System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.EnableRaisingEvents = false;
proc.StartInfo.FileName = exePath + @"\bin\test.exe";

string args = String.Format(@"{0}{1}{2}{3}", "-plot " ,path1, " -o ", path2);
proc.StartInfo.Arguments = args;

当 path1 和 path2 不包含空格时(假设 path1 = C:\Temp\ 和 path2 = C:\Temp\Test)那么它工作正常,但是当 path1 和 path2 包含空格时 path1 = C:\Documents and Settings\user\Desktop and path2 = C:\Documents and Settings\user\Desktop\New Folder) 然后它会截断 path1 和 path2 并中止。

请告诉我正确的做法。

谢谢, 阿什

【问题讨论】:

    标签: c#


    【解决方案1】:
    Process proc = new Process(); 
    proc.EnableRaisingEvents = false; 
    proc.StartInfo.FileName = Path.Combine(exePath, @"bin\test.exe");
    proc.StartInfo.Arguments = String.Format(@"-plot ""{0}"" -o ""{1}""", path1, path2);
    

    如果使用文字(不带@),您可以转义引号:

    \"{0}\"
    

    如果使用逐字字符串(带@),您可以将引号加倍:

    ""{0}""
    

    【讨论】:

    • 您应该使用 string.Format 来增加可读性和可维护性。不要将参数名称作为更多参数放在 string.Format 函数中!
    【解决方案2】:

    您需要将路径封装在引号中。否则,它将空格作为分隔符读取,并认为路径的其余部分是参数。

    【讨论】:

      【解决方案3】:

      您可以将可能包含空格的参数放在双引号中,如下所示:

      string args = String.Format(@"{0} ""{1}"" {2} ""{3}""", "-plot", path1, "-o", path2);
      

      【讨论】:

        【解决方案4】:

        将路径放在引号中...例如 "\""+path1+"\""

        【讨论】:

          【解决方案5】:

          尝试以下方法:

          string args = String.Format("{0}\"{1}\"{2}\"{3}\"", "-plot " ,path1, " -o ", path2);
          

          这将在您的路径周围加上引号,以便将它们作为单个字符串传递并且忽略其中的空格。

          【讨论】:

          • 您需要使用 "" 而不是 \" 来转义逐字字符串文字 (@"") 中的引号
          • 并不是要使用逐字逐句的文字,编辑我的例子来解决这个问题
          • 您应该使用 string.Format 来增加可读性和可维护性。不要将参数名称作为更多参数放在 string.Format 函数中!
          猜你喜欢
          • 2013-06-16
          • 2014-05-30
          • 2016-01-22
          • 2015-12-10
          • 2019-01-15
          • 2013-08-28
          • 2011-02-05
          • 1970-01-01
          • 2014-01-22
          相关资源
          最近更新 更多