Primeiro, salve sua consulta em um arquivo de texto sql (arquivo de texto com extensão .sql). Certifique-se de adicionar a instrução USE no início, que informa ao servidor com qual banco de dados você deseja trabalhar. Usando o exemplo do MSDN:
USE AdventureWorks2008R2;
GO
SELECT p.FirstName + ' ' + p.LastName AS 'Employee Name',
a.AddressLine1, a.AddressLine2 , a.City, a.PostalCode
FROM Person.Person AS p
INNER JOIN HumanResources.Employee AS e
ON p.BusinessEntityID = e.BusinessEntityID
INNER JOIN Person.BusinessEntityAddress bea
ON bea.BusinessEntityID = e.BusinessEntityID
INNER JOIN Person.Address AS a
ON a.AddressID = bea.AddressID;
GO
Em seguida, em seu arquivo de lote, você executa o SQLCMD e passa o arquivo sql (com caminho) como parâmetro.
Se você precisar autenticar também, precisará adicionar os parâmetros -U e -P ao seu comando SQLCMD.
Aqui está um artigo do MSDN que trata do utilitário sqlcmd com mais detalhes.