我有一个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: 我试过更换:
< - <
> - >
& - &
但它没有帮助。
谢谢!
答案 0 :(得分:2)
您需要通过加倍来转义百分号(%)字符和插入符号(^)。这是list有问题的命令行字符
SET _pswr="!#$%%^^&*()<>"
答案 1 :(得分:0)
使用sqlcmd在Windows 2008 Server SP2上使用Windows批处理文件进行测试。只需将%符号转义为%%即可。无需逃避^。