您好我已经创建了一个JAVA程序,它使用ProcessBuilder启动命令提示符,java传递带有一些参数的命令到控制台然后命令提示符负责处理命令,一切正常,直到命令行参数太长。实际上我使用phantomjs作为命令并将多个url作为参数传递给命令提示符。 例如:Java生成的字符串 -
phantomjs download.js --url=http://google.com, http://yahoo.com, http://website.com..................http://demo.com
当我传递100个网址然后它工作正常但是当增加到1000的网址然后它不起作用。我知道,这是因为参数缓冲区大小。当我试图传递1000的网址时,它超过了Windows命令行的最大字节数限制。所以有任何其他方法可以将此值传递给文件,或者我们可以增加命令行参数的限制。
请给我一些解决方案。
答案 0 :(得分:1)
为什么不将文件名作为参数传递? 目标文件包含URL列表(JSON.stringify或每行一个)
例如
var system = require('system');
var fs = require('fs');
var args = system.args;
if (args.length === 1) {
console.log('download.js <filename>');
phantom.exit(1);
} else {
var filename = args[1];
var stream = fs.open(filename, 'r')
var line;
while(line=stream.readLine()) {
//do want you want here
console.log(line);
}
phantom.exit(0);
}
使用
运行>phantomjs download.js mytestfile.txt