Arquivo .Bat Executando .SQL

Bom dia, Boa tarde, Boa noite.

Tenho um arquivo .Bat que executa um arquivo .SQL para dropar as tabelas do banco de dados(Caso tenha) e cria-las.

O arquivo .SQL busca na pasta da determinada versão para os Scripts de criação das tabelas.

Então tenho o seguinte cenário: .Bat(para digitar login/senha) -> .SQL(para dropar as tabelas e executar os scrpits na ordem) -> .SQL(Script de fato do banco).

Eu queria digitar no .Bat a versão do banco que quero restaurar. Teria como fazer isso?

.BAT

set usuario=
set /p usuario=Digite o Usuario do Banco de Dados:
IF "%usuario%"=="" (goto erroLogin)ELSE (goto definirSenha)

:definirSenha
set /p senha=Digite a Senha do Banco de Dados:
@echo off
IF "%senha%"=="" (goto erroLogin) ELSE (goto executar)

:erroLogin
echo.
echo.
echo Preencha corretamente o login
echo.
pause
goto definirVersao

:executar
echo.
echo.
echo ----------------------------------------------------------
SQLCMD -U %usuario% -P %senha% -S SRVSQL01 -i "SQL_SERVERSCRIPTLOTE.SQL"
pause 

:end

.SQL (Drop e Criação)

:setvar VERSAO ""
-- CAMINHO PARA OS SCRIPTS
:setvar CAMINHO "I:\Projeto\3.16\Banco de Dados\SQL Server\Install\\"

SET NOCOUNT ON
GO

print VERSAO

:On Error exit
PRINT 'APAGANDO TABELAS EXISTENTES...'
EXEC sp_MSforeachtable @command1 = "DROP TABLE ?"
GO

:On Error exit
PRINT 'RECRIANDO TABELAS...'
-- TODO: CRIAR VARIÁVEL PARA INSERIR VERSÃO DO SISTEMA

:r $(CAMINHO)"02CreateTables.sql"
:r $(CAMINHO)"03Indices.sql"
:r $(CAMINHO)"04Trigger.sql"

PRINT 'PROCESSO FINALIZADO'
GO

Obs: A ideia seria parametrizar o caminho :setvar CAMINHO “I:\Projeto\3.16\Banco de Dados\SQL Server\Install\” onde a versão 3.16 seria digitada podendo ser 3.06, 3.10

Atenciosamente,

Boa tarde, Guilherme.

Uma solução seria vc enviar a versão ou caminho direto do .BAT para o arquivo .SQL.
No caso já é usado algo do tipo com as informações de usuario e senha que vc utiliza.
Segue exemplo:

.BAT

[code]set usuario=
set /p usuario=Digite o Usuario do Banco de Dados:
IF “%usuario%”=="" (goto erroLogin)ELSE (goto definirSenha)

:definirSenha
set /p senha=Digite a Senha do Banco de Dados:
@echo off
IF “%senha%”=="" (goto erroLogin) ELSE (goto definirVersao)

:definirVersao
set /p versao=Digite a Versao do Banco de Dados:
@echo off
IF “%versao%”=="" (goto erroLogin) ELSE (goto executar)

:erroLogin
echo.
echo.
echo Preencha corretamente o login
echo.
pause
goto definirVersao

:executar
echo.
echo.
echo ----------------------------------------------------------
SQLCMD -U %usuario% -P %senha% -S SRVSQL01 -v Versao=“I:\Projeto\%Versao%\Banco de Dados\SQL Server\Install\” -i "SQL_SERVERSCRIPTLOTE.SQL"
pause

:end
[/code]

.SQL (no sql no lugar do caminho vc irá a variavel enviada do .BAT)

SET NOCOUNT ON
GO

print VERSAO

:On Error exit
PRINT 'APAGANDO TABELAS EXISTENTES...'
EXEC sp_MSforeachtable @command1 = "DROP TABLE ?"
GO

:On Error exit
PRINT 'RECRIANDO TABELAS...'
-- TODO: CRIAR VARIÁVEL PARA INSERIR VERSÃO DO SISTEMA

:r $(Versao)"02CreateTables.sql"
:r $(Versao)"03Indices.sql"
:r $(Versao)"04Trigger.sql"

PRINT 'PROCESSO FINALIZADO'
GO

Espero que funcione !

Att,

vagus,

Obrigado, sua solução funcionou corretamente, obrigado pela ajuda.