Как увеличить размер аргумента командной строки или ограничение в командной строке Windows
Привет, я создал программу 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-адресов, он не работает. Я знаю, это происходит из-за размера буфера аргумента. Когда я пытался передать URL-адреса 1000, то это превышает максимальный предел байтов командной строки для Windows. Так что есть любой другой способ передать это значение в файл или мы можем увеличить лимит аргументов командной строки.
Пожалуйста, дайте мне какое-то решение для этого.
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