2016-04-19 3 views
1

Я объединил несколько решений, которые я нашел в Интернете, чтобы попытаться это сделать.Запуск всех файлов SQL в нескольких каталогах

https://stackoverflow.com/a/6504317/2471473

https://sqlandme.com/2013/03/25/sql-server-executing-multiple-script-files-using-sqlcmd/

Я пытаюсь запустить один CMD-скрипт (Script1.cmd) с местом папки .sql файлов. Этот единственный скрипт запускает другой скрипт (Script2.cmd), чтобы использовать sqlcmd для выполнения всех файлов .sql в этом местоположении. Он работает в основном, но он оставляет открытое окно команд, из которого я должен выйти из каждой папки.

Script1.cmd

start Script2.cmd "C:\Location1" 
start Script2.cmd "C:\Location2" 

Script2.cmd

@Echo Off 
FOR /f %%i IN ('DIR %1\*.Sql /B') do call :RunScript %1 %%i 
GOTO :END 

:RunScript 
Echo Executing Script: %2 
cd %1 
SQLCMD -S Server123 -d Database456 -E -i %2 
Echo Completed Script: %2 

:END 
+1

Вы действительно хотите, чтобы обе 'командные строки Script2.cmd' работать одновременно? – aschipfl

+0

@aschipfl Можно ли запускать их серийно из Scrip1? – Kennah

+1

Да: для запуска один за другим просто используйте 'call Script2.cmd *' ... вы также можете использовать 'start '"/WAIT cmd/C Script2.cmd * ', если вы хотите открыть новое окно для каждый пробег ... – aschipfl

ответ

2

Официальная командная строка ссылка на Windows XP или Windows Server 2003, Windows Vista (and above) кажется слишком коротким. Читайте this (extended) start command documentation:

Синтаксис: START "title" [/D path] [options] "command" [parameters]

Всегда включайте TITLE это может быть простой строкой как "My Script" или только пара пустых кавычек "". Согласно документации Microsoft , заголовок является необязательным, но в зависимости от других выбранных опций у вас могут быть проблемы, если они опущены.

Если команда является внутренней командой cmd или пакетным файлом, то команда работает с переключателем /K на cmd.exe. Это означает, что окно останется после выполнения команды.

Следующая Script1.cmd должны работать и близко начал командные окна:

start "" cmd /C Script2.cmd "C:\Location1" 
start "" cmd /C Script2.cmd "C:\Location2" 
+0

Huzzah! Это было решение! – Kennah

Смежные вопросы