2016-08-23 13 views
2

バッチスクリプトでは非常に緑色ですが、クライアントがSSISの使用を許可していないので、これは今すぐに切り替えることができる唯一のツールです。ディレクトリ内の各ファイルでストアドプロシージャをパラメータとして呼び出すにはどうすればよいですか?

私はフラットファイルのフォルダを持っていますが、私は各ファイルのストアドプロシージャを呼び出すと思います。

ファイルをループすることができますが、sqlcmdを呼び出すことはできますが、ファイルの名前をストアドプロシージャに渡す方法がわかりません。ここで

は私が持っているものです。

pushd D:\test 
for /F "delims=" %%i IN ('dir /b') do sqlcmd -S servername -U username -P pword -Q "EXEC db.schema.sp $(the_filename)" -v the_filename = %%i 
popd 

しかし、私はエラーを取得しています: 不適切な構文を '%' に近い

正しい構文は何ですか?

+3

[ドキュメントのページ](https://msdn.microsoft.com/en-us/library/ms162773.aspx)の末尾にある例を参照して、 '='の前後のスペースを削除してください: '-v the_filename =" %% i "' – wOxxOm

+0

@wOxxOmこの変更を行っても、残念なことに構文エラーは解消されませんでした。 – confusedKid

答えて

1

これを試してみてください:

pushd D:\test 
for /F "delims=" %%i IN ('dir /b') do (
    sqlcmd -S servername -U username -P pword -Q "EXEC db.schema.sp '%%i'" 
) 
popd 

括弧は必要ありませんが、私は追加明確にするためにそれらを使用したいです。

関連する問題