Ограничение командной строки (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 — это файл, содержащий необходимые параметры (parameter1 parameter2... ParameterN):ExecutableFile.exe c:\temp\ParameterFile.txt
Измените программы, использующие большие переменные среды, чтобы переменные среды содержали менее 8191 символа.
Например, если переменная среды PATH содержит более 8191 символов, используйте один или несколько из следующих методов, чтобы уменьшить количество символов:
- Используйте более короткие имена для папок и файлов.
- Уменьшение глубины деревьев папок.
- Храните файлы в меньшем количестве папок, чтобы в переменной среды PATH требовалось меньше папок.
- Изучите возможные методы, которые можно использовать для уменьшения зависимости PATH для поиска .dll файлов.
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по