2009-12-09 5 views
2

je reçois un fichier de chauve-souris comme ci-dessous:utilisateur d'entrée - fichier batch DOS

@ECHO Executing scripts... 
PAUSE 

for %%X in (*.SQL) do SQLCMD -S localhost -d CTL -I -i "%%X" >> ResultScript.txt 

pause 

Dans ce que je veux a des entrées utilisateur pour localhost (instance de serveur Sql) et CTL (base de données). Comment cela peut-il être réalisé sous DOS (OS: Windows XP)

Merci

Répondre

4
SET /P variable=PromptString 

donc votre fichier de commandes serait quelque chose comme ce

@ECHO Executing scripts... 
PAUSE 
SET /P sqlServer=Please enter SQLServer: 
SET /P CTL=Please enter CTL: 
for %%X in (*.SQL) do SQLCMD -S %sqlServer% -d %CTL% -I -i "%%X" >> ResultScript.txt 

pause 
+0

Comment avez-vous deviné les entrées d'utilisateur exactes que je voulais? Effrayant! – briantyler

1

marqueurs de paramètres d'utilisation, où% 1 fait référence à le premier paramètre,% 2 le second, et ainsi de suite .:

for %%X in (*.SQL) do SQLCMD -S %1 -d %2 -I -i "%%X" >> ResultScript.txt 

Si votre fichier de traitement par lots a été appelé ExecScript.bat, votre utilisateur courrait comme

ExecScript instancename databasename 

Vous voulez probablement ajouter un test au-dessus de la boucle pour vous assurer que les deux paramètres sont passés dans. L'exécution SQLCMD avec une wouldn instance vide et base de données ne fonctionne pas trop bien.