Поделиться через


Ограничение строки командной строки (Cmd. exe)

В этой статье описывается ограничение длины строк, используемых из командной строки в командной строке (Cmd.exe). Он также предоставляет методы, которые можно использовать для обхода этого ограничения.

Область применения: Windows Server 2012 R2, Windows Server 2008 R2 с пакетом обновления 1 (SP1), Windows 7 с пакетом обновления 1 (SP1)
Исходный номер базы знаний: 830473

Дополнительная информация

Максимальная длина строки, которую можно использовать в командной строке, составляет 8191 символов.

Это ограничение применяется к следующему:

  • командная строка
  • отдельные переменные среды, унаследованные другими процессами, например переменная PATH
  • все расширения переменных среды

При использовании командной строки для выполнения пакетных файлов это ограничение также применяется к обработке пакетного файла.

Примеры

В следующих примерах показано, как это ограничение применяется к командам, выполняемым в командной строке, и командам, которые используются в пакетном файле.

  • В командной строке общая длина следующей командной строки не может содержать более 8191 символов:

    cmd.exe /k ExecutableFile.exe parameter1, parameter2... parameterN
    
  • В пакетном файле общая длина следующей командной строки не может содержать более 8191 символов:

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

    Это ограничение применяется к строкам команд, содержащихся в пакетных файлах при использовании командной строки для запуска пакетного файла.

  • В командной строке общая длина EnvironmentVariable1 после развертывания EnvironmentVariable2 и EnvironmentVariable3 не может содержать более 8191 символов:

    c:> set EnvironmentVariable1 = EnvironmentVariable2 EnvironmentVariable3
    
  • В пакетном файле общая длина следующей командной строки после развертывания параметров не может содержать более 8191 символов:

    ExecutableFile.exe parameter1 parameter2
    
  • Несмотря на то, что ограничение Win32 для переменных среды составляет 32 767 символов, командная строка игнорирует любые переменные среды, унаследованные от родительского процесса, и больше, чем собственные ограничения 8191 символов (в соответствии с операционной системой). Дополнительные сведения о функции см. в SetEnvironmentVariable разделе SetEnvironmentVariableA.

Как обойти ограничение

Чтобы обойти ограничение, используйте один или несколько следующих методов в соответствии с вашей ситуацией:

  • Измените программы, требующие длинных команд, чтобы они использовали файл, содержащий сведения о параметрах, а затем включите имя файла в командной строке.

    Например, вместо использования ExecutableFile.exe Parameter1 Parameter2... ParameterN командной строки в пакетном файле измените программу на использование командной строки, аналогичной следующей командной строке, где ParameterFile — это файл, содержащий необходимые параметры (параметр1 параметр2... ParameterN):

    ExecutableFile.exe c:\temp\ParameterFile.txt
    
  • Измените программы, использующие большие переменные среды, чтобы переменные среды содержали менее 8191 символов.

    Например, если переменная среды PATH содержит более 8191 символов, используйте один или несколько следующих методов, чтобы уменьшить количество символов:

    • Используйте более короткие имена для папок и файлов.
    • Уменьшите глубину деревьев папок.
    • Сохраните файлы в меньшем количестве папок, чтобы в переменной среды PATH было необходимо меньше папок.
    • Изучите возможные методы, которые можно использовать для уменьшения зависимости PATH для поиска .dll файлов.