Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#进程。启动参数被截断_C#_.net_Process_Truncate - Fatal编程技术网

C#进程。启动参数被截断

C#进程。启动参数被截断,c#,.net,process,truncate,C#,.net,Process,Truncate,当传递很长的文件路径时,我得到了截断的参数。我需要启动一个程序,并通过命令参数传递所有信息-有时它只是截断命令。它是全局性的,所以这不仅是每个参数的问题,也是整个参数的问题 编辑: 正如monkey_p所说,问题可能在于命令行长度的限制。问题是:如何绕过它?(更改工作目录不行,因为文件可能存在于不同的位置)。我不确定您的问题是什么,但命令行有一个限制。同样的限制也适用于Process.Start(命令,args) 在运行Microsoft Windows的计算机上 XP或更高版本中的最大长度 可

当传递很长的文件路径时,我得到了截断的参数。我需要启动一个程序,并通过命令参数传递所有信息-有时它只是截断命令。它是全局性的,所以这不仅是每个参数的问题,也是整个参数的问题

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

我不确定您的问题是什么,但命令行有一个限制。同样的限制也适用于Process.Start(命令,args)

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

如何绕过限制 绕过限制,使用一个或多个 以下更多方法(如图所示) 适合您的情况):

  • 修改 需要长命令的程序 行,以便它们使用 包含参数信息, 然后包括文件名 在命令行中
例如,不使用 ExecutableFile.exe参数1 参数2…参数命令行 在批处理文件中,将程序修改为 使用类似于的命令行 下面的命令行,其中 ParameterFile是一个包含 所需参数(参数1 参数2…参数n):

ExecutableFile.exe c:\temp\ParameterFile.txt

  • 修改 使用大型环境的程序 变量使环境 变量包含的值小于 2047或8191个字符(如图所示) 适合您的操作系统)
例如,如果路径环境 变量包含多个 2047或8191个字符(如图所示) 适用于您的操作系统), 使用以下一个或多个选项: 减少事故数量的方法 人物:

  • 使用较短的名称 文件夹和文件
  • 减少工作的深度 文件夹树
  • 以更少的内存存储文件 文件夹,以便使用更少的文件夹 在路径环境中是必需的 变数
  • 调查可能 可用于降低成本的方法 用于定位.dll的路径的依赖关系 档案
这是从,所以对我没有任何帮助-似乎这个限制不能增加,也没有办法以任何其他方式运行它


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

我认为这就是问题所在-问题是:如何绕过它?可能还有另一个问题:参数中的空格,因为空格用于在参数之间断开。在参数周围使用引号。1。所有参数都用引号2括起来。即使一个长参数被引号包围,也会被截断