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

Применимо к: Windows Server 2012 R2 StandardWindows Server 2012 R2 DatacenterWindows Server 2012 R2 Essentials

Обзор


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

Дополнительные сведения


На компьютерах под управлением Microsoft Windows XP или более поздних версий, максимальная длина строки, которую можно использовать в командной строке 8191 символов. На компьютерах под управлением Microsoft Windows 2000 или Windows NT 4.0 Максимальная длина строки, который можно использовать в командной строке составляет 2047 символов.

Это ограничение применимо в командную строку, отдельные переменные (например, переменной PATH), наследуются другие процессы и все расширения переменных среды. При использовании командной строки для запуска пакетных файлов, это ограничение также применяется к обработке пакетных файлов.

Примеры

Ниже приведено несколько примеров как это ограничение распространяется на команды, которые выполняются в командной строке и команды, используемые в пакетном файле.
  • В командной строке общая длина следующую командную строку, используйте в командной строке не может содержать более 8191 либо 2047 знаков (в зависимости от операционной системы):
    cmd.exe/k ExecutableFile.exe параметр1, параметр2 ... parameterN
  • В пакетном файле общая длина следующая командная строка, которая используется в пакетных файлах не может содержать более 8191 либо 2047 знаков (в зависимости от операционной системы):
    cmd.exe/k ExecutableFile.exe параметр1, параметр2 ... parameterN
    Это ограничение распространяется на командных строк, которые содержатся в пакетных файлах при использовании командной строки для запуска пакетного файла.
  • В командной строке, общая длина
    EnvironmentVariable1 после развертывания
    EnvironmentVariable2 и
    EnvironmentVariable3 не может содержать более 8191 либо 2047 знаков (в зависимости от операционной системы):
    c: > задать EnvironmentVariable1=EnvironmentVariable2EnvironmentVariable3
  • В пакетном файле общая длина следующей командной строки после развертывания переменных среды в командной строке не может содержать более 8191 либо 2047 знаков (в зависимости от операционной системы):
    ExecutableFile.exe parameter1parameter2
  • Несмотря на то, что ограничение Win32 для переменных среды — 32 767 символов, командной строке игнорирует все переменные среды, которые наследуются от родительского процесса и превышает 8191 либо 2047 символов (при необходимости собственные ограничения в операционной системе). Дополнительные сведения о функции SetEnvironmentVariable посетите следующий веб-узел корпорации Майкрософт:

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

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

    Например, вместо ExecutableFile.exe параметр1 , параметр2 ... ParameterN Изменение использовать командную строку, подобную следующей командной строки программа командной строки, пакетного файла, где
    ParameterFile — это файл, содержащий необходимые параметры (параметр1 параметр2
    ...ParameterN):
    ExecutableFile.exe c:\temp\ParameterFile.txt
  • Изменение программы, которые используют переменные среды больших таким образом, чтобы содержать переменные среды меньше 8191 либо 2047 символов (в зависимости от операционной системы).

    Например если переменная среды PATH содержит более 8191 либо 2047 знаков (в зависимости от операционной системы), используйте один или несколько из следующих методов можно уменьшить число знаков:
    • Используйте более короткие имена файлов и папок.
    • Уменьшите глубину дерева папок.
    • Хранить файлы в меньшее количество папок, таким образом, требуется меньшее количество папок в переменной среды PATH.
    • Исследуйте возможные методы, которые можно использовать для уменьшения зависимостей пути поиска DLL-файлы.