Как я могу добавить переменную в командный файл? - PullRequest
0 голосов
/ 02 октября 2010

Привет всем, я новичок в пакетных файлах и борюсь. Я использую SQL Server 2008

Я создал один пакетный файл, который выполняет другие пакетные файлы + сценарии sql. Я хотел бы использовать переменные, как я могу это сделать? Я хотел бы установить путь в качестве переменной. У меня может быть несколько путей в зависимости от местоположения скрипта.

:On Error exit 

 CALL C:\mypath\Scripts\ExecSqlScripts.bat
 CALL C:\mypath\Scripts\ExecSqlScriptsTwo.bat

 SQLCMD -S (Local) -i C:\mypath\Scripts\InsertUsernameTwo.sql
 SQLCMD -S (Local) -i C:\mypath\Scripts\InsertUsernameThree.sql
 SQLCMD -S (Local) -i C:\mypath\Scripts\InsertUsernameFour.sql

Есть предложения?

1 Ответ

2 голосов
/ 02 октября 2010

Вам нужна команда set - http://www.computerhope.com/sethlp.htm

:On Error exit 

set thePath=C:\mypath\Scripts

 CALL %thePath%\ExecSqlScripts.bat
 CALL %thePath%\ExecSqlScriptsTwo.bat

 SQLCMD -S (Local) -i %thePath%\InsertUsernameTwo.sql
 SQLCMD -S (Local) -i %thePath%\InsertUsernameThree.sql
 SQLCMD -S (Local) -i %thePath%\InsertUsernameFour.sql

Набор thePath=C:\mypath\Scripts также может быть вызван извне командного файла.

Другое решение, позволяющее избежать повторяющегося кодаиспользовать команду for.

for %%f in (ExecSqlScripts ExecSqlScriptsTwo) do call %%f.bat

Это эквивалентно CALL% thePath% \ ExecSqlScripts.bat CALL% thePath% \ ExecSqlScriptsTwo.bat

for %%f in (InsertUsernameTwo InsertUsernameThree InsertUsernameFour) do call SQLCMD -S (Local) -i %thePath%\%%f.sql

Это эквивалентно

 SQLCMD -S (Local) -i %thePath%\InsertUsernameTwo.sql
 SQLCMD -S (Local) -i %thePath%\InsertUsernameThree.sql
 SQLCMD -S (Local) -i %thePath%\InsertUsernameFour.sql
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...