传递非常长的文件路径时,我有截断的参数。我需要启动一个程序并通过命令参数传递所有内容 - 有时它只是截断命令。它是全局的 - 因此它不仅是每个参数的问题,而且是整个问题。
编辑: 问题可能是命令行长度的限制,因为 monkey_p 表示。问题是:如何绕过它? (更改工作目录不会因为文件可以存在于不同的位置)。
答案 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并只传入文件名,并在程序结束后移动文件回到他们的位置 - 丑陋,丑陋,丑陋,我知道,但似乎没有别的办法......