Как увеличить размер аргумента командной строки или ограничение в командной строке 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
Другие вопросы по тегам