2017-07-14 32 views
2

在Windows .bat文件,我可以使用重定向这样的:如何将括号发送到由括号限定的管道中?

(echo connect/as sysdba 
echo select sysdate from dual; 
echo exit 
) | sqlplus -s /nolog 

,它会运行(当然这个例子什么都不做)。如何将圆括号转换为此格式的查询,如下所示:

(echo connect/as sysdba 
echo select trunc(sysdate) from dual; 
echo exit 
) | sqlplus -s /nolog 

没有炸掉管道?

+0

使用脱字号在回显中跳出右括号'^)' – LotPings

回答

3

您需要在关闭括号之前添加三个插入符号。

(
echo connect/as sysdba 
echo select trunc(sysdate^^^) from dual; 
echo exit 
) | more 

为什么?
在第一种情况下,您需要一个脱字符来避开括号,以避免该块被关闭。

(echo test (test^)) 

但是,正如您使用管道,完整的构造被打包并转移到一个新的命令EXE。
在那里你需要第二次插入符号,但要转换这个插入符号,你需要在原始回声中添加两个插入符号。
因此,你总共需要三个。

+0

完美,非常感谢! – Cecil