2016-11-03 6 views
0

で予想外だった場合、私はこのコードでバッチがあります。文のバッチは、この時点

set /p carga= ¿Carga inicial o carga diaria? 

if "%carga%"=="c" (

    sqlcmd -Q "exec dbo.SP_OFB_INF_PSN @VALOR = 1, @FECHA=''" -S (local) -d bd_ofb -o OFB_INF_PSN_2.txt 

) 

をしかし、私は、このエラーに

-dを持っているが、この時点で

予想外でしたIFの外に出てもエラーコードはありません

sqlcmd -Q "exec dbo.SP_OFB_INF_PSN @VALOR = 1, @FECHA=''" -S (local) -d bd_ofb -o OFB_INF_PSN_2.txt 
ステファンが提案されているよう
+0

は-Q前に-dを移動してみてください。 – FDavidov

+4

'(local')の') 'はループに' ''を閉じていると誤って解釈されます。あなたはそれをエスケープする必要があります: '... -S(local ^)-d ...' – Stephan

+1

実際にはかっこを持つ理由はありません。それらを削除し、 'IF'コマンドとsqlコマンドをすべて1行に入れてください。 – Squashman

答えて

0

あなたは(^)付き)閉じ括弧をエスケープすることもできますし、変数にあなたの声明を遅延拡張を使用して設定することができます。

setlocal enableDelayedExpansion 

set /p carga= ¿Carga inicial o carga diaria? 

set "statement=sqlcmd -Q "exec dbo.SP_OFB_INF_PSN @VALOR = 1, @FECHA=''" -S (local) -d bd_ofb -o OFB_INF_PSN_2.txt" 

if "%carga%"=="c" (
    !statement! 
) 
関連する問題