Строка усекается при передаче ее как параметра из bat, если она имеет более 6 пробелов - PullRequest
2 голосов
/ 09 июля 2011

Платформа: Windows 7, Windows XP Программное обеспечение: DOS

Я знаю об ограничении длины командной строки, но никогда не испытывал ничего подобного ". У меня есть команда doskey, передающая параметры / аргументы в скрипт vbs, и я определил, что если я попытаюсь передать строку с пробелами, которые содержат более 6 пробелов - все, что находится за шестым пробелом, усекается. Это известное ограничение ??

Вот как выглядит доски:

set scripts=C:\Windows\Scripts\    
doskey tt=@echo off $t cscript //NoLogo %scripts%tt.vbs %scripts% $1 $2 $t @echo on

Теперь вы можете открыть пакет и протестировать его, введя простую строку, например:

tt + "1 2 3 4 5 6 7 8 9"

И результат будет:

1 2 3 4 5 6

Длина не имеет значения, я могу проверить ее с любой другой строкой, и она будет обрезана после 6-го пробела.

Кто-нибудь имеет идею или знает решение?

1 Ответ

1 голос
/ 20 июня 2012

У меня на самом деле нет объяснения, но есть обходной путь:

Используйте простые кавычки: кажется, двойные кавычки не учитываются doskey (или, скорее, анализируются cmd), и поэтому он использует пробелы для разделения значений на аргументы.

Я думаю, что 6-е ограничение пространства связано с тем, что доски останавливается на 9 аргументах (% 1-% 9), и вы достигнете предела.Ваши 6 цифр, знак +,% scripts% args и сам скрипт составляют 9

...