我已编写批处理文件以从sql server打印出max(ID)。我看到循环,循环两次,一旦打印正确的iD数字,并在下一次迭代中打印一个括号'('。我不知道为什么它迭代两次。
@echo on
set maxid=0
echo %maxid%
timeout /t 10
for /F "usebackq tokens=1" %%i in (`sqlcmd -E -S "DBNAME\instance01" -h-1 -Q "select max(ID) from table1"`) do set maxid=%%i
echo testingcount
echo %maxid%
timeout /t 10
if %maxid% NEQ 0 (
echo count not zero
echo %maxid%
timeout /t 10
goto end
) else if %maxid% EQU 0(
echo count is zero
timeout /t 10
}
:end
echo END
由于
答案 0 :(得分:1)
我认为您可能已经获得了一些您不想要的输出((1 row(s) affected)
。请尝试这样做:
@echo off
set maxid=0
echo %maxid%
timeout /t 10
for /F "usebackq tokens=1" %%i in (`sqlcmd -E -S "DBNAME\instance01" -h-1 -Q "set nocount on;select max(id) from table1"`) do set maxid=%%i
echo testingcount
echo %maxid%
timeout /t 10
if %maxid% GTR 0 (
echo count not zero
echo %maxid%
timeout /t 10
goto end
) else (
if %maxid% EQU 0 (
echo count is zero
timeout /t 10
)
)
:end
echo END