在我的应用程序中,我正在运行一个来自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。他们建议将params放入文本文件,然后运行所需的应用程序,并将此文件名作为参数传递。我已经尝试过这种方法,但看起来整个终端在我这样运行后冻结了。