2014-12-23 3 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> 나는이 벡입니다 같은데요 ause 루프는 변수를 마지막 행으로 설정합니다. 그래서 토큰과 델림을 사용하여 대신 10을 파싱 할 수있는 방법이 있습니까?

+0

(나는 100 % 확실하지 않다, 그러나 [이 SO 게시물에 도움이 될 수 있습니다] http://stackoverflow.com/questions/2014129/is-there-a-을 x-rows-affected-in-the-command-line에서 영향을받는 방법) –

+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