[英]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.