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.

Questions connexes