我正在处理的当前项目有问题。
我必须将存储在文件中的查询放入一个变量中,该变量的文件只包含一个查询(它是由程序的一部分生成的)。例如,我使用以下代码:
set /p query=<path\to\my\folder\fileContainingQuery.soql
当查询不是那么长时它可以工作,但是当它的长度超过 1024 个字符时,查询被截断,因为我必须使用 FART 工具将它发送到另一个配置文件,这很不方便。
如何覆盖这个问题?
最佳答案
一个环境变量中可以存储多少数据是有限制的。理论上,最大长度为 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 的内容。
因此,您对查询长度的最终限制小于该限制。
关于variables - 如何覆盖批处理变量的字符数限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21723275/