gpt4 book ai didi

batch-file - bq 工具、bat 文件 | CALL 时转义字符不起作用

转载 作者:行者123 更新时间:2023-12-02 20:34:56 25 4
gpt4 key购买 nike

使用 bq 工具,我可以毫无问题地使用脱字符号转义 > 运算符 ^:

bq 查询“SELECT x FROM [presentation_dim.dim_events] WHERE event^>1”

但是,当我通过 bat 文件调用完全相同的命令时,整个事情就崩溃了。

调用 bq 查询“SELECT x FROM [presentation_dim.dim_events] WHERE event^>1”

我知道call是这里的问题。我无法删除它,因为我需要在它之后运行其他命令(bq extractgsutil cp)。我已经尝试过对 Escape user input in windows batch file 上显示的内容进行改编,无济于事。

这里出了什么问题?提前致谢。

最佳答案

我想 bq.cmd 本身包含这样的内容

set param1=%1
set SQL=%~2
python bigQuery.py --%param1% "%SQL%"

因此,set SQL=%1 行需要转义特殊字符。

但是当您使用CALL时,批处理解析器有一个额外的转义阶段,但在此之前它还有一个将所有插入符加倍的阶段!

因此,您在 call bq query "SELECT x FROM [presentation_dim.dim_events] WHERE event^>1" 中的字符串将转换为“从 [presentation_dim.dim_events] WHERE 事件 ^^>1 中选择 x”

我认为没有仅用插入符号来解决这个问题的解决方案。

但是您可以通过简单地定义一个包含一个插入符号的变量来避免这种情况

set "caret=^"
call bq query "SELECT x FROM [presentation_dim.dim_events] WHERE event%%CARET%%>1"

关于batch-file - bq 工具、bat 文件 | CALL 时转义字符不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29614712/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com