在我的应用程序中,我从 asp 脚本运行终端命令,该命令运行 PhantomJs 并给出一些参数并记录结果。不幸的是,因为我正在传递文件的路径,所以对于迟钝的 Windows 终端来说,整个命令变得太长了,我得到了input line too long
错误。更奇怪的是,限制应该是 2/8k,而我只有大约 350 个字符。单个参数的长度是否也有限制?
这是我的代码示例命令:
System.Diagnostics.ProcessStartInfo phantomProcess = new System.Diagnostics.ProcessStartInfo();
phantomProcess.FileName = "cmd";
string command = "/c \"phantomjs 'K:\\LAMP\\www\\2.x\\examples\\ASP.NET MVC2 demo\\ASP.NET MVC\\render.js' 'K:\\LAMP\\www\\2.x\\examples\\ASP.NET MVC2 demo\\ASP.NET MVC\\exportHtml-1570662045.html|K:\\LAMP\\www\\2.x\\examples\\ASP.NET MVC2 demo\\ASP.NET MVC\\exportHtml-1570642318.html|K:\\LAMP\\www\\2.x\\examples\\ASP.NET MVC2 demo\\ASP.NET MVC\\exportHtml-1570648254.html|K:\\LAMP\\www\\2.x\\examples\\ASP.NET MVC2 demo\\ASP.NET MVC\\exportHtml-1570696111.html|K:\\LAMP\\www\\2.x\\examples\\ASP.NET MVC2 demo\\ASP.NET MVC\\exportHtml-1570696111.html|K:\\LAMP\\www\\2.x\\examples\\ASP.NET MVC2 demo\\ASP.NET MVC\\exportHtml-1570669151.html|K:\\LAMP\\www\\2.x\\examples\\ASP.NET MVC2 demo\\ASP.NET MVC\\exportHtml-1570669151.html|K:\\LAMP\\www\\2.x\\examples\\ASP.NET MVC2 demo\\ASP.NET MVC\\exportHtml-1570678096.html'\"";
phantomProcess.Arguments = command;
System.IO.StreamReader sOut = proc.StandardOutput;
phantomOut = sOut.ReadToEnd().Trim();
proc.WaitForExit();
sOut.Close();
有没有办法解决这个错误,一些特定于 Windows 的技巧?我见过一些使用环境变量的解决方案,但是将长字符串分配给变量看起来以同样的方式被破坏。如果标签错误,请纠正我。
编辑
我从 MS 那里找到了一些关于这个“功能”的信息:http: //support.microsoft.com/kb/830473。他们建议将参数放入一个文本文件,然后将此文件名作为参数传递来运行所需的应用程序。我已经尝试过这种方法,但是在我这样运行它之后,整个终端看起来都冻结了。