これは動作します:パスにスペースが含まれているときにexeを実行すると問題が発生します。
SET server=MyServer
SET db=MyDb
FOR /F "usebackq tokens=1" %%i IN (`sqlcmd -S %server% -d %db% -w200 -h-1 -E -Q "set nocount on; select REPORTING_DATE FROM dbo.CURRENT_REPORTING_DATE"`) DO set REPORTING_DATE=%%i
ECHO The Reporting Date is %REPORTING_DATE%
しかし、私は完全にSQLCMDするパスを修飾してみてください...
SET sqlcmdexe="C:\Program Files\Microsoft SQL Server\100\Tools\Binn\sqlcmd.exe" SET server=MyServer SET db=MyDb
FOR /F "usebackq tokens=1" %%i IN (` %sqlcmdexe% -S %server% -d %db%
-w200 -h-1 -E -Q "set nocount on; select REPORTING_DATE FROM dbo.CURRENT_REPORTING_DATE"`) DO set REPORTING_DATE=%%i ECHO The Reporting Date is %REPORTING_DATE%
私はエラーを取得する:
システムは指定されたパスを見つけることができません。
...恐らくフォルダ名のスペースのためです。
パスをチルダパス(スペースなし)に変更する方法はありますか?このステートメントを正しく実行するには、引用符で囲んでください。
%sqlcmdexe%の前には下向きのチックがありますが、少なくともIE6ではそれが見えないのかどうかはわかりません。はい、6!
)
はそれが=を役に立てば幸い% ' – jeb
[バッチファイル:パスに空白があると、FOR/Fは機能しません](http://stackoverflow.com/questions/6474738/batch-file-for-f-doesnt-work-if-path)の重複-has-spaces) –
はい、あなたのコールトリックが私に根本的な問題を調べるように促しました – jeb