максимальная длина командной строки windows
Командная подсказка (Cmd. exe) ограничение строки командной строки
В этой статье обсуждается ограничение длины строк, которые вы используете из командной строки в командной строке (Cmd.exe). Он также предоставляет методы, которые можно использовать для работы над этим ограничением.
Применяется к: Windows Server 2012 R2, Windows 2008 R2 Пакет обновления 1, Windows 7 Пакет обновления 1
Исходный номер КБ: 830473
Дополнительная информация
Максимальная длина строки, которую можно использовать в командной строке, — 8191 символ.
Это ограничение применяется к:
Если для запуска пакетных файлов используется командная подсказка, это ограничение также применяется к пакетной обработке файлов.
Примеры
В следующих примерах покажите, как это ограничение применимо к командам, запускаемой в командной подсказке, и командам, которые используются в пакетном файле.
В командной строке общая длина следующей командной строки не может содержать более 8191 символов:
В пакетном файле общая длина следующей командной строки не может содержать более 8191 символов:
Это ограничение применяется к строкам команд, которые содержатся в пакетных файлах при использовании командной строки для запуска пакетного файла.
В командной подсказке общая длина после расширения не может содержать более EnvironmentVariable1 EnvironmentVariable2 EnvironmentVariable3 8191 символов:
В пакетном файле общая длина следующей командной строки после расширения параметров не может содержать более 8191 символов:
Несмотря на то, что ограничение Win32 для переменных среды составляет 32 767 символов, Командная подсказка игнорирует любые переменные среды, унаследованные от родительского процесса и более длинные, чем собственные ограничения в 8191 символы (как это необходимо для операционной системы). Дополнительные сведения о SetEnvironmentVariable функции см. в функции SetEnvironmentVariableA.
Как обойти ограничение
Чтобы обойти ограничение, используйте один или несколько из следующих методов, соответствующих ситуации:
Измените программы, которые требуют длинных командных строк, чтобы они использовали файл, содержащий сведения о параметре, а затем включили имя файла в командную строку.
Например, вместо использования командной строки в пакетном файле измените программу, чтобы использовать командную строку, аналогичную следующей командной строке, где ParameterFile — это файл, содержащий необходимые параметры ExecutableFile.exe Parameter1 Parameter2. ParameterN (parameter1 parameter2. ParameterN):
Измените программы, в которых используются большие переменные среды, чтобы переменные среды содержали менее 8191 символов.
Например, если переменная среды PATH содержит более 8191 символов, используйте один или несколько следующих методов, чтобы уменьшить число символов:
Ограничения строки командной строки cmd.exe
Я работал над спулингом файла bat из запроса оракула, который копировал содержимое из одного места в другое,
Теперь команда, которая генерируется, имеет длину более 255 символов, например
Как это выдает ошибку, есть ли работа, чтобы управлять такой ситуацией, чтобы увеличить эту длину команды?
P.S. Некоторые пути + имена файлов имеют длину более 259 символов, к которой я нашел, что есть меньше аргументов
Вы можете использовать subst, чтобы назвать два подкаталога, из которых вы работаете, с буквами дисков. Очевидно, что это не настоящие, а логические диски, но вы могли бы значительно сократить пути.
Параметр/D освобождает ассоциацию.
Если это не так, вы можете сломать команду, прервав разрыв строки с помощью cmd-escape char ^ или путем объединения команды в круглые скобки.
- SUBST (уже было предложено)
использовать 8.3 нотацию (например, C:\Progra
1\- также было предложено)
Используйте этот синтаксис (если вы запускаете командную строку в Windows):
copy \?\c:\verylongpath\verylongname \?\d:\anotherverylongpath\
Возможно, вам захочется использовать DBMS_FILE_TRANSFER.COPY_FILE вместо создания файла bat. Вы можете вообще не использовать файлы bat (которые зависят от платформы).
Возможным обходным решением может быть использование эквивалентов коротких путей, например. C:\Progra
На компьютерах под управлением Microsoft Windows XP или более поздней версии максимальная длина строки, которую вы можете использовать в командной строке, составляет 8191 символ. На компьютерах под управлением Microsoft Windows 2000 или Windows NT 4.0 максимальная длина строки, которую вы можете использовать в командной строке, составляет 2047 символов.
Ограничение максимальной длины пути
в Windows API (с некоторыми исключениями, обсуждаемыми в следующих параграфах) максимальная длина пути — это максимальный _ путь, который определен как 260 символов. Локальный путь структурирован в следующем порядке: буква диска, двоеточие, обратная косая черта, имена компонентов, разделенные обратной косой чертой, и завершающий нуль-символ. Например, максимальный путь на диске D — это «D: \ часть 256-символьного пути «, где » » представляет невидимый завершающий нуль-символ для текущей системной кодовой страницы. (Символы используются для наглядности и не могут быть частью допустимой строки пути.)
Например, это ограничение может быть достигнуто при клонировании репозитория Git с длинными именами файлов в папку с длинным именем.
функции файлового ввода-вывода в Windows API преобразуют «/» в » \ » в процессе преобразования имени в имя в формате NT, за исключением случаев использования \ \ префикса «? \ «, как описано в следующих разделах.
нет необходимости выполнять нормализацию юникода в строках пути и имени файла для использования в Windows функциях API-интерфейса файлового ввода/вывода, так как файловая система обрабатывает путь и имена файлов как непрозрачную последовательность WCHAR. любые нормализации, необходимые приложению, должны выполняться с учетом того, что внешние вызовы связанных функций API-интерфейса Windows файлового ввода/вывода.
При использовании API для создания каталога указанный путь не может быть настолько длинным, что нельзя добавить имя файла 8,3 (т. е. имя каталога не может превышать максимальный _ путь минус 12).
Оболочка и файловая система имеют разные требования. можно создать путь с Windows API, который пользовательский интерфейс оболочки не может интерпретировать правильно.
включение длинных путей в Windows 10, версии 1607 и более поздних
Windows 10 начиная с версии 1607, ограничения по максимальному _ пути были удалены из общих функций файлов и каталогов Win32. Однако необходимо явно принять участие в новом поведении.
Чтобы обеспечить новое поведение при полном пути, должны выполняться оба следующих условия.
Манифест приложения также должен содержать longPathAware элемент.
Команды Windows
все поддерживаемые версии Windows (сервер и клиент) имеют набор встроенных команд консоли Win32.
этот набор документации описывает Windows команды, которые можно использовать для автоматизации задач с помощью скриптов или средств создания скриптов.
Предварительные требования
Сведения, содержащиеся в этом разделе, применимы к:
Общие сведения о командной оболочке
командная оболочка была первой оболочкой, встроенной в Windows для автоматизации стандартных задач, таких как управление учетными записями пользователей или ночное резервное копирование с пакетными файлами (.bat). с помощью Windows сервера сценариев можно выполнять более сложные сценарии в командной оболочке. Дополнительные сведения см. в разделе cscript или Wscript. С помощью скриптов можно более эффективно выполнять операции, чем с помощью пользовательского интерфейса. Скрипты принимают все команды, доступные в командной строке.
Windows имеет две командные оболочки: командная оболочка и PowerShell. Каждая оболочка представляет собой программную программу, обеспечивающую прямой обмен данными между вами и операционной системой или приложением, предоставляя среду для автоматизации ИТ-операций.
PowerShell был разработан для расширения возможностей командной оболочки для выполнения команд PowerShell, называемых командлетами. командлеты похожи на команды Windows, но предоставляют более расширяемый язык сценариев. вы можете выполнять команды Windows и командлеты powershell в powershell, но командная оболочка может выполнять только команды Windows, а не командлеты powershell.
для наиболее надежной и актуальной Windows автоматизации рекомендуется использовать PowerShell вместо команд Windows или Windows сервера скриптов для автоматизации Windows.
Вы также можете скачать и установить PowerShell Core, версию PowerShell с открытым исходным кодом.
Неправильное изменение реестра может серьезно повредить систему. Перед внесением следующих изменений в реестр следует создать резервную копию всех ценных данных на компьютере.
Чтобы включить или отключить завершение имен файлов и каталогов в командной оболочке на компьютере или в сеансе входа пользователя, запустите regedit.exe и задайте следующее значение reg_DWOrd:
Справочник по командной строке A-Z
Чтобы найти сведения о конкретной команде, в следующем меню A-Z щелкните букву, с которой начинается команда, а затем щелкните имя команды.
Максимальная длина командной строки windows
Запускает новый экземпляр интерпретатора команд Cmd.exe. Если используется без параметров, Команда cmd отображает версию и сведения об авторских правах операционной системы.
Синтаксис
Параметры
Значение | Color |
---|---|
0 | Черный |
1 | Синий |
2 | Зеленый |
3 | Aqua |
4 | Красный |
5 | Сиреневый |
6 | Желтый |
7 | Белый |
8 | Серый |
9 | Светло-синий |
а | светло-зеленый |
b | Светло-голубой |
с | Светло-красный |
d | Светло-фиолетовый |
й | Светло-желтый |
f | Светлое белое |
Remarks
Кроме того, не используется параметр /s.
Вы используете ровно один набор кавычек.
В кавычки не используются специальные символы (например, & () @ ^ |).
В кавычках используется один или несколько пробельных символов.
Строка в кавычках — это имя исполняемого файла.
Если предыдущие условия не выполнены, строка обрабатывается путем проверки первого символа, чтобы проверить, является ли он открывающей кавычкой. Если первый символ является открывающей кавычкой, он удаляется вместе с закрывающей кавычкой. Любой текст, следующий за закрывающими кавычками, сохраняется.
Если не указать параметр /d в строке, Cmd.exe ищет следующие подразделы реестра:
HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\AutoRun\REG_SZ
HKEY_CURRENT_USER\Software\Microsoft\Command Processor\AutoRun\REG_EXPAND_SZ
Если имеется один или оба подраздела реестра, они выполняются перед всеми остальными переменными.
Неправильное изменение реестра может серьезно повредить систему. Перед внесением изменений следует сделать резервную копию всех ценных данных на компьютере.
HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\EnableExtensions\REG_DWORD
HKEY_CURRENT_USER\Software\Microsoft\Command Processor\EnableExtensions\REG_DWORD
Присвойте параметру REG_DWORD значение 0 × 1 (включено) или 0 × 0 (отключено) в реестре с помощью Regedit.exe. Заданные пользователем параметры имеют приоритет над параметрами компьютера, а параметры командной строки имеют приоритет над параметрами реестра.
Неправильное изменение реестра может серьезно повредить систему. Перед внесением изменений следует сделать резервную копию всех ценных данных на компьютере.
При включении расширений команд затрагиваются следующие команды:
assoc
call
chdir (CD)
color
Del (стирание)
endlocal
ftype
goto
mkdir (MD)
popd
prompt
pushd
setlocal
shift
Start (также включает изменения во внешние командные процессы)
При включении отложенного расширения переменных среды можно использовать символ восклицательного знака для замены значения переменной среды во время выполнения.
HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\CompletionChar\REG_DWORD
HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\PathCompletionChar\REG_DWORD
HKEY_CURRENT_USER\Software\Microsoft\Command Processor\CompletionChar\REG_DWORD
HKEY_CURRENT_USER\Software\Microsoft\Command Processor\PathCompletionChar\REG_DWORD
Неправильное изменение реестра может серьезно повредить систему. Перед внесением изменений следует сделать резервную копию всех ценных данных на компьютере.
Если включить завершение имен файлов и каталогов с помощью /f: on, используйте сочетание клавиш CTRL + D для завершения имен каталогов и Ctrl + f для завершения имени файла. Чтобы отключить определенный символ завершения в реестре, используйте значение пробела [0 × 20], так как оно не является допустимым управляющим символом.
При нажатии клавиш CTRL + D или CTRL + F обрабатывается завершение имени файла и каталога. Эти функции сочетания клавиш добавляют символ-шаблон к строке (если он отсутствует), формирует список совпадающих путей, а затем отображает первый соответствующий путь.
Если ни один из путей не соответствует, функция завершения имени файла и каталога выдает звуковой сигнал и не изменяет отображение. Для перемещения по списку совпадающих путей нажмите клавиши CTRL + D или CTRL + F несколько раз. Для перемещения по списку назад нажмите клавишу SHIFT и CTRL + D или CTRL + F одновременно. Чтобы отменить сохраненный список совпадающих путей и создать новый список, измените строку и нажмите клавиши CTRL + D или CTRL + F. Если переключиться между сочетаниями Ctrl + D и CTRL + F, сохраненный список соответствующих путей отбрасывается и создается новый список. Единственное различие между сочетаниями клавиш Ctrl + d и Ctrl + f заключается в том, что сочетание клавиш Ctrl + d соответствует именам каталогов, а сочетание клавиш CTRL + F соответствует именам файлов и каталогов. Если вы используете автозаполнение имен файлов и каталогов во всех встроенных командах каталога (т. е. CD, MD или RD), предполагается завершение каталога.
Имя файла и каталога правильно обрабатывает имена файлов, которые содержат пробелы или специальные символы, если они заключены в кавычки для соответствующего пути.
Если предоставленные сведения содержат пробелы, заключите текст в кавычки (например, «имя компьютера»).
Если обработка имени файла и каталога выполняется из строки, любая часть пути справа от курсора отбрасывается (в точке, где обработано завершение).