2016-08-23 1 views
2

Je suis très vert avec les scripts Batch, mais comme mon client ne permet pas l'utilisation de SSIS, c'est le seul outil auquel je peux me tourner maintenant ...Comment appeler une procédure stockée sur chacun des fichiers d'un répertoire en tant que paramètre?

J'ai un dossier de fichiers plats, et je veux appeler une procédure stockée sur chaque fichier.

Je peux parcourir les fichiers, et je peux appeler sqlcmd, mais je n'arrive pas à comprendre comment passer le nom du fichier à la procédure stockée.

Voici ce que j'ai:

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 

Mais je reçois une erreur: syntaxe incorrecte près de '%'

Quelle est la syntaxe correcte?

+3

Supprimez les espaces autour de '=', voir les exemples à la fin de [la page de documentation] (https://msdn.microsoft.com/en-us/library/ms162773.aspx): '-v the_filename =" %% i "' – wOxxOm

+0

@wOxxOm Faire ce changement ne s'est pas débarrassé de l'erreur de syntaxe malheureusement. – confusedKid

Répondre

1

Essayez ceci:

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 

Les parenthèses ne sont pas nécessaires, mais je tiens à les utiliser pour plus de clarté.