Limitação de cadeia de caracteres de linha de comando do prompt de comando (Cmd. exe)

Este artigo discute a limitação do comprimento das cadeias de caracteres que você usa no prompt de comando no Prompt de Comando (Cmd.exe). Ele também fornece métodos que você pode usar para contornar essa limitação.

Aplica-se a: Windows Server 2012 R2, Windows Server 2008 R2 Service Pack 1, Windows 7 Service Pack 1
Número original do KB: 830473

Mais informações

O comprimento máximo da cadeia de caracteres que você pode usar no prompt de comando é de 8191 caracteres.

Esta limitação se aplica a:

  • a linha de comando
  • variáveis de ambiente individuais que são herdadas por outros processos, como a variável PATH
  • Todas as expansões de variáveis de ambiente

Se você usar o Prompt de Comando para executar arquivos em lotes, essa limitação também se aplicará ao processamento de arquivos em lotes.

Exemplos

Os exemplos a seguir mostram como essa limitação se aplica aos comandos executados no Prompt de Comando e aos comandos usados em um arquivo em lotes.

  • No prompt de comando, o comprimento total da seguinte linha de comando não pode conter mais de 8191 caracteres:

    cmd.exe /k ExecutableFile.exe parameter1, parameter2... parameterN
    
  • Em um arquivo em lotes, o comprimento total da seguinte linha de comando não pode conter mais de 8191 caracteres:

    cmd.exe /k ExecutableFile.exe parameter1, parameter2... parameterN
    

    Essa limitação se aplica a linhas de comando contidas em arquivos em lotes quando você usa o Prompt de Comando para executar o arquivo em lotes.

  • No prompt de comando, o comprimento total de depois que você expande EnvironmentVariable2 e EnvironmentVariable3 não pode conter mais de EnvironmentVariable1 8191 caracteres:

    c:> set EnvironmentVariable1 = EnvironmentVariable2 EnvironmentVariable3
    
  • Em um arquivo em lotes, o comprimento total da seguinte linha de comando depois de expandir os parâmetros não pode conter mais de 8191 caracteres:

    ExecutableFile.exe parameter1 parameter2
    
  • Embora a limitação do Win32 para variáveis de ambiente seja de 32.767 caracteres, o Prompt de Comando ignora todas as variáveis de ambiente herdadas do processo pai e são mais longas do que suas próprias limitações de 8191 caracteres (conforme apropriado para o sistema operacional). Para obter mais informações sobre a SetEnvironmentVariable função, consulte Função SetEnvironmentVariableA.

Como contornar a limitação

Para contornar a limitação, use um ou mais dos seguintes métodos, conforme apropriado para sua situação:

  • Modifique os programas que exigem linhas de comando longas para que eles usem um arquivo que contenha as informações do parâmetro e, em seguida, inclua o nome do arquivo na linha de comando.

    Por exemplo, em vez de usar a ExecutableFile.exe Parameter1 Parameter2... ParameterN linha de comando em um arquivo em lotes, modifique o programa para usar uma linha de comando semelhante à linha de comando a seguir, em que ParameterFile é um arquivo que contém os parâmetros necessários (parameter1 parameter2... ParâmetroN):

    ExecutableFile.exe c:\temp\ParameterFile.txt
    
  • Modifique programas que usam variáveis de ambiente grandes para que as variáveis de ambiente contenham menos de 8191 caracteres.

    Por exemplo, se a variável de ambiente PATH contiver mais de 8191 caracteres, use um ou mais dos seguintes métodos para reduzir o número de caracteres:

    • Use nomes mais curtos para pastas e arquivos.
    • Reduza a profundidade das árvores de pastas.
    • Armazene arquivos em menos pastas para que menos pastas sejam necessárias na variável de ambiente PATH.
    • Investigue possíveis métodos que você pode usar para reduzir a dependência de PATH para localizar arquivos .dll.