Limitação do Windows ao comprimento dos parâmetros da linha de comandos
2
program.exe file1 file2 ... file10000 não vai funcionar.
O Windows tem uma limitação estranha ao tamanho dos parâmetros da linha de comando. É algo entre 32683 e 32853 caracteres. Existe alguma outra maneira de passar parâmetros?
Adivinhar que o limite máximo de caracteres é 32.767 (valor máximo de um inteiro de 16 bits com sinal). Não faço ideia se existe outra maneira de passar parâmetros, mas se você escreveu o programa, não seria melhor passar o nome do diretório como parâmetro?
John H
@johnh, sim, essa é a maneira correta de fazer isso. No entanto, o meu program.exenão permite dirs. Além disso, não posso passar parâmetros por partes (1-1000 primeiro, 1001-2000 segundo etc). E, mais importante, não possuo código-fonte para modificá-lo.
Shyman
2
O que este programa faz? Talvez existam alternativas que funcionem.
MBraedley
@ShyMan Sim, poderíamos usar mais algumas informações aqui. Eu realmente quero sugerir o uso de um arquivo em lote para isso, mas seu comentário sobre não conseguir passar os parâmetros em grupos significa que provavelmente não é uma opção. Então eu acho que a pergunta que eu tenho é, por que você não pode passar os parâmetros em grupos? Não é realmente possível coletar a saída de cada grupo e, em seguida, agrupar essa saída para criar o resultado desejado?
John H
1
Eu estou supondo que o programa não pode puxar os parâmetros de um arquivo de texto ou algo assim?
Iszi
Respostas:
1
A solução mais prática é fazer com que seu fornecedor conserte o programa.
Caso contrário, seria possível (embora não fácil) ligar a função GetCommandLine para que ela retornasse uma cadeia de comprimento arbitrário, embora isso possa causar a falha do programa, dependendo de como ele processa a linha de comando.
program.exe
não permite dirs. Além disso, não posso passar parâmetros por partes (1-1000 primeiro, 1001-2000 segundo etc). E, mais importante, não possuo código-fonte para modificá-lo.Respostas:
A solução mais prática é fazer com que seu fornecedor conserte o programa.
Caso contrário, seria possível (embora não fácil) ligar a função GetCommandLine para que ela retornasse uma cadeia de comprimento arbitrário, embora isso possa causar a falha do programa, dependendo de como ele processa a linha de comando.
fonte
P: "Existe alguma outra maneira de passar parâmetros"
A: Sim, passe em um único arquivo de configuração. Faça o seu programa ler o arquivo de configuração para obter todos os parâmetros.
Por exemplo:
Seu comando:
fonte