1

我有一个 bat 文件,当我安装我的应用程序时它会执行一堆 sql 脚本。在安装对话框中,用户设置 dbname、登录名和密码,然后在此 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;

但这无济于事。

谢谢!

4

2 回答 2

2

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

SET _pswr="!#$%%^^&*()<>"
于 2013-06-11T10:08:55.283 回答
0

Tested as well with windows batch file on Windows 2008 Server SP2 with sqlcmd. Only needed to escape the % sign as %%. No need to escape the ^.

于 2014-12-30T03:45:40.310 回答