在Sqlcmd中转义特殊符号

时间:2013-06-11 09:46:39

标签: sql sql-server-2008 batch-file

我有一个bat文件,当我安装我的应用程序时,它执行一堆sql脚本。在安装对话框中,用户设置dbname,login和password,然后在此bat文件中使用。这是:

SET _server="(local)"
SET _db=dbname
SET _user=sa
SET _pswr="!#$%^&*()<>"

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_regsql.exe -S %_server% -d %_db% -U %_user% -P %_pswr% -A all

"%systemdrive%\Program Files\Microsoft SQL Server\100\Tools\Binn\SQLCMD.exe" -S %_server% -d %_db% -U %_user% -P %_pswr% -i .\createDB.sql

pause

在密码不包含任何特殊符号之前,一切正常。但是,如果它,我得到以下错误“登录失败的用户'sa'。”。所以很明显,密码错误。现在问题是:如何在bat文件中转义这些特殊符号?

PS: 我试过更换:

< - &lt;
> - &gt;
& - &amp;

但它没有帮助。

谢谢!

2 个答案:

答案 0 :(得分:2)

您需要通过加倍来转义百分号(%)字符和插入符号(^)。这是list有问题的命令行字符

SET _pswr="!#$%%^^&*()<>"

答案 1 :(得分:0)

使用sqlcmd在Windows 2008 Server SP2上使用Windows批处理文件进行测试。只需将%符号转义为%%即可。无需逃避^。