1

アプリケーションのインストール時に多数の SQL スクリプトを実行するバット ファイルがあります。インストール ダイアログで、ユーザーは dbname、login、および password を設定します。これらは、このバット ファイルで使用されます。ここにあります:

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 に答える