嗨,我创建了一个JAVA程序,它使用ProcessBuilder启动命令提示符,java将带有一些参数的命令传递到控制台,然后命令提示符负责处理命令,一切正常,直到命令行参数太长。实际上,我使用 phantomjs 作为命令,并将多个 url 作为参数传递给命令提示符。 例如:Java生成的字符串-
phantomjs download.js --url=http://google.com、http://yahoo.com、http://website.com.......http://demo.com
当我传递 100 个 url 时,它工作正常,但当增加到 1000 个 url 时,它不起作用。我知道,这是因为参数缓冲区大小而发生的。当我尝试传递 1000 个 url 时,它超出了 Windows 命令行的最大字节限制。因此,还有其他方法可以将此值传递到文件中,或者我们可以增加命令行参数的限制吗?
请给我一些解决方案。
最佳答案
为什么不只传递文件名作为参数? 目标文件包含 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
关于java - 如何增加 Windows 命令提示符中的命令行参数大小或限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20239755/