2009-12-09 182 views
2

我得到如下一個bat文件:用戶輸入 - DOS批處理文件

@ECHO Executing scripts... 
PAUSE 

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

pause 

在此我要對本地主機用戶輸入(SQL Server實例)和CTL(數據庫)。 這怎麼可能在DOS(OS:WinXP中)實現

感謝

回答

4
SET /P variable=PromptString 

所以您的批處理文件將是這樣的

@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

你是怎麼猜測我想要的確切用戶輸入的?幽靈般的! – briantyler 2011-09-16 16:25:09

1

使用參數標記,其中%1是指第一個參數,%2第二個等等。:

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

如果您的批處理文件被稱爲ExecScript.bat,您的用戶將運行它

ExecScript instancename databasename 

你可能會想添加上述測試for循環,以確保這兩個參數都傳入。一個空白實例和數據庫止跌運行SQLCMD工作得不好。