C#Process.Start参数被截断

时间:2009-07-29 14:44:16

标签: c# .net process truncate

传递非常长的文件路径时,我有截断的参数。我需要启动一个程序并通过命令参数传递所有内容 - 有时它只是截断命令。它是全局的 - 因此它不仅是每个参数的问题,而且是整个问题。

编辑: 问题可能是命令行长度的限制,因为 monkey_p 表示。问题是:如何绕过它? (更改工作目录不会因为文件可以存在于不同的位置)。

2 个答案:

答案 0 :(得分:2)

我不确定你的问题是什么,但命令行有一个限制。同样的限制对Process.Start(command,args)

有效
  

在运行Microsoft Windows的计算机上   XP或更高版本,最大长度   您可以在命令中使用的字符串   提示符是8191个字符。上   运行Microsoft Windows的计算机   2000或Windows NT 4.0,最大值   您可以使用的字符串的长度   在命令提示符是2047年   字符。

答案 1 :(得分:1)

  

如何解决限制To   解决限制,使用一个或   更多以下方法(如   适合你的情况):

     
      
  • 修改   需要长命令的程序   线条,以便他们使用一个文件   包含参数信息,   然后包含文件的名称   在命令行中。
  •   
     
    
      

例如,而不是使用       ExecutableFile.exe参数1       Parameter2 ... ParameterN命令行       在批处理文件中,将程序修改为       使用类似于的命令行       以下命令行,其中       ParameterFile是包含的文件       所需参数(参数1       parameter2 ... ParameterN):

             
        

ExecutableFile.exe c:\temp\ParameterFile.txt

      
    
  
     
      
  • 修改   使用大环境的程序   变量使环境   变量包含少于任何一个   2047或8191个字符(如   适合您的操作系统)。
  •   
     
    
      

例如,如果是PATH环境       变量包含多个       2047或8191个字符(如       适合您的操作系统),       使用以下一项或多项       减少数量的方法       字符:

    
  
     
      
  • 使用较短的名称   文件夹和文件。
  •   
  • 减少深度   文件夹树。
  •   
  • 以较少的文件存储文件   文件夹,以便减少文件夹   在PATH环境中需要   变量。
  •   
  • 调查可能   您可以用来减少的方法   PATH用于定位.dll的依赖关系   文件。
  •   

来自Microsoft Support,所以对我没有任何帮助 - 似乎这个限制无法增加,也无法以任何其他方式运行...

我将尝试做的是:记住每个文件的路径,将它们移动到某个DIR然后运行程序,将CurrentDirectory设置为DIR并只传入文件名,并在程序结束后移动文件回到他们的位置 - 丑陋,丑陋,丑陋,我知道,但似乎没有别的办法......