繁体   English   中英

为什么sqlcmd -v foo =“ c:\\ path”吃掉“ c:”?

[英]why did sqlcmd -v foo=“c:\path” eat the “c:”?

我有foo.sql作为:

print 'foo=$(foo)'

然后在foo.cmd中有以下外壳程序脚本:

sqlcmd -i foo.sql -v foo="c:\path"

运行foo.cmd打印:

foo=\path

如何逃脱“ c:”? 是dos-shell吃它,还是sqlcmd?

cmd的参数定界符包括等号。 在其他情况下(例如bjam.exe),我已经看到整个参数序列必须加引号才能正常工作。

尝试这个:

sqlcmd -i foo.sql -v "foo=c:\path"

如果仍然去除“ c:”部分,则我将重点放在sqlcmd上。 我个人没有安装它进行测试。 这完全基于类似情况下的经验。

好,我的错 以上工作。

我做错了在做什么:sqlcmd -i foo.sql -v foo ='c:\\ path'

(单引号,因为我试图将它们作为''sql字符串传递)不起作用。 它将砍c:

使用另一个外壳会导致这种情况。

通过powershell运行sqlcmd时,我刚刚有了这个。 切换到使用cmd.exe,它工作正常

双引号可转义“:”和单引号,以便sql将变量值视为字符串。 例如

sqlcmd -S。 -d myDb -i。\\ test.sql -v pathToFile =“'D:\\ Temp \\ temp \\ My.csv'”

转义反斜杠,

sqlcmd -i foo.sql -v foo="c:\\path"

实际上是您的贝壳在吃

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM