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

Este artigo discute a limitação para o comprimento das cadeias de caracteres que você usa do 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 de KB original: 830473

Mais informações

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

Essa limitação se aplica a:

  • a linha de comando
  • variáveis de ambiente individuais 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 lote, essa limitação também se aplica ao processamento de arquivos em lote.

Exemplos

Os exemplos a seguir mostram como essa limitação se aplica aos comandos executados no Prompt de Comando e aos comandos que você usa em um arquivo em lote.

  • No Prompt de Comando, o comprimento total da linha de comando a seguir não pode conter mais de 8.191 caracteres:

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

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

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

  • No Prompt de Comando, o tamanho total de EnvironmentVariable1 após a expansão EnvironmentVariable2 e EnvironmentVariable3 não pode conter mais de 8.191 caracteres:

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

    ExecutableFile.exe parameter1 parameter2
    
  • Embora a limitação 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 8.191 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 programas que exigem linhas de comando longas para que eles usem um arquivo que contém as informações do parâmetro e, em seguida, incluam 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 lote, 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 (parâmetro1 parâmetro2... ParameterN):

    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 8.191 caracteres.

    Por exemplo, se a variável de ambiente PATH contiver mais de 8.191 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 do PATH para localizar arquivos .dll.