2014-02-12 3 views
5

У меня проблема с текущим проектом, над которым я работаю. Мне нужно получить запрос, хранящийся из файла, в переменную, файл которой содержит только запрос (он генерируется частью программы). Например, я использую следующий код:Как переопределить ограничение количества символов в партиях?

set /p query=<path\to\my\folder\fileContainingQuery.soql 

Это работает, когда запрос не так долго, но когда его длина составляет за 1024 символов, запрос усекается и так как я должен отправить его в другой файл конфигурации, используя инструмент FART, это совсем не удобно.

Как устранить эту проблему?

ответ

2

Существует ли предел того, сколько данных может храниться в переменной окружения. Теоретически максимальная длина составляет 32767 символов, НО командный файл не может установить переменную, которая длиннее максимальной длины командной строки (8192).

Вы можете использовать команду for /f прочитать строку

for /f "usebackq delims=" %%f in ("path\to\my\folder\fileContainingQuery.soql") do set "q=%%f" 

Или вы можете создать вспомогательный командный файл, чтобы назначить содержание запроса

<nul set/px=set q=>sql.set.cmd 
type "path\to\my\folder\fileContainingQuery.soql">>sql.set.cmd 
call sql.set.cmd 

И оба получат максимально возможный текст в переменную ТОЛЬКО, если конечная командная строка не слишком велика (8186 символов в моих тестах). В другом случае ничего не извлекается.

НО, как только значение было восстановлено, оно должно использоваться внутри команды. И здесь происходит такое же ограничение. 8192 - максимальная длина линии и содержание переменной IS внутри линии.

Итак, ваш конечный предел для длины запроса меньше этого.

2

@MC ND: Спасибо за ваш ответ, я использовал команду for /f таким образом, подумав об этом. (Не читал ваш ответ в данный момент).

(for /f "delims=" %%b in (path\to\my\folder\fileContainingQuery.soql) do (
    set query=%%b 
)) 
echo %query% 

Моя гипотеза для моей предыдущей задачи является то, что набор функций/р вар может принимать только 1024 символов на пользовательский ввод, и, как мой файл запроса содержит только одну строку, длина которой может быть больше, чем этот предел, он обрезает запрос. Вышеприведенный код работает отлично для меня, и я получаю свой полный запрос в переменной.

+0

Большое спасибо. это сработало и для меня. – picnic4u

Смежные вопросы