Ограничение длины строки в командном файле xp? - PullRequest
4 голосов
/ 06 марта 2012

При запуске длинной команды в файле .bat (скажем, длина 300 символов)

например:

Some_exe "C:/Documents and Settings/Some user/Some folder1/Some folder2/Some folder3/Some folder4 ... -Some_exe_arg1="arg 1 name" -Some_exe_arg2="arg 2 name" -Some_exe_arg3="arg 3 name"  

Есть ли ограничение на размер строки, которую может обрабатывать CMD.exe? Должен ли я использовать .CMD или .BAT? Можно ли как-то преодолеть это ограничение?

Спасибо!

Ответы [ 2 ]

6 голосов
/ 06 марта 2012

Максимальная максимальной длины строки пакета составляет 8191 байт!

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

Образцы

echo Longline with 8191 characters.........

set "var=a"
echo UltraLongLine %var:4000chars=% %var:4000chars=% %var:4000chars=% %var:4000chars=%

echo Test <8000Chars <8000chars <8000chars .... <nul

Суть в том, что все строки имеют длину менее 8192 байт после анализа

5 голосов
/ 06 марта 2012

Все версии Windows начиная с XP поддерживают максимальную длину строки пакета 8191 байт: http://support.microsoft.com/kb/830473

Часто исполняемые файлы преодолевают ограничение длины командной строки, позволяя указывать значения параметров в файле,Например, FINDSTR имеет параметр / G: имя файла, который указывает имя файла, который содержит строки поиска.

Нет разницы между .BAT и .CMD в отношении длины строки.На самом деле, между ними почти нет никакой разницы: https://stackoverflow.com/a/148991/1012053. (Примечание. Большинство комментариев, подвергающих сомнению точность связанного ответа, предшествуют самой последней отредактированной версии ответа. Связанный ответтеперь правильно.)

...