2014-12-23 65 views
4

我試圖將sqlcmd查詢的輸出設置爲批處理文件中的變量。如何將sqlcmd輸出設置爲批處理變量?

這裏是我的查詢:

sqlcmd -S <SERVER> -d <DATABASE> -Q "select max(Column1)+1 from Table1" 

這給了我正是我想要什麼,我會想到什麼:

----------- 
     10 
<1 rows affected> 

然而,當我嘗試將它設置爲一個變量,我用這個腳本:

for /f %%a in ('sqlcmd -S <SERVER> -d <DATABASE> -Q "select max(Column1)+1 from Table1"') 
    do set ColumnVar=%%a 
echo %ColumnVar% 
pause 

這給了我這樣的結果,而不是:<1 rows affected>我猜這是BEC因爲循環將變量設置爲最後一行。那麼有沒有一種方法可以使用令牌和分隔符來解析出10個呢?

+0

我不是100%肯定,但[本SO後可以幫助(http://stackoverflow.com/questions/2014129/is-there-a-在命令行中抑制x-rows-affected-in-sqlcmd) –

+0

謝謝,我在搜索時沒有看到這個問題。 – David

回答

6

嘗試打開NOCOUNT:

for /f %%a in ('sqlcmd -S <SERVER> -d <DATABASE> -Q "SET NOCOUNT ON; select max(Column1)+1 from Table1"') 
    do set ColumnVar=%%a 
echo %ColumnVar% 
pause 
+0

這是完美的。我只需要修改一件事就是將''delims =「'改爲'」delims =「'來獲取數字輸出。謝謝你,先生! – David

相關問題