如何将sqlcmd输出设置为批处理变量?

Dav*_*vid 6 sql-server for-loop batch-file sqlcmd batch-processing

我正在尝试将sqlcmd查询的输出设置为批处理文件中的变量.

这是我的查询:

sqlcmd -S <SERVER> -d <DATABASE> -Q "select max(Column1)+1 from Table1"
Run Code Online (Sandbox Code Playgroud)

这给了我我期望的和我想要的东西:

-----------
         10
<1 rows affected>
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试将其设置为变量时,我使用了以下脚本:

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

这给了我这个结果:<1 rows affected>我猜这是因为循环将变量设置为最后一行.那么有没有一种方法可以使用令牌和delims来解析10呢?

Dav*_*ugg 7

尝试启用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
Run Code Online (Sandbox Code Playgroud)