Мне нужно запустить около 50 скриптов в папке, используя sqlcmd из командного файла.Результаты запроса каждого скрипта должны быть отправлены в его собственный выходной файл.У меня есть рабочий пакетный файл, который запускается каждый из отдельной строки:
sqlcmd -S %INSTANCE% -d %DATABASE% -U %USERNAME% -P "%PASSWORD%" -i "%SCRIPTFOLDER%\master_departments.sql" -s "|" -o "%OUTPUTFOLDER%\master_departments.csv" -W
sqlcmd -S %INSTANCE% -d %DATABASE% -U %USERNAME% -P "%PASSWORD%" -i "%SCRIPTFOLDER%\master_companies.sql" -s "|" -o "%OUTPUTFOLDER%\master_companies.csv" -W
sqlcmd -S %INSTANCE% -d %DATABASE% -U %USERNAME% -P %PASSWORD% -i "%SCRIPTFOLDER%\bill_history.sql" -s "|" -o "%OUTPUTFOLDER%\bill_history.csv" -W
sqlcmd -S %INSTANCE% -d %DATABASE% -U %USERNAME% -P %PASSWORD% -i "%SCRIPTFOLDER%\episodes.sql" -s "|" -o "%OUTPUTFOLDER%\episodes.csv" -W
Есть ли способ запустить это в какой-то цикл?Я видел примеры, которые запускают цикл всех сценариев SQL в папке, но ничего из того, что я видел, не делает это с набором выходных файлов.
По предложению @LotPings я использовал следующий код:
set INSTANCE=<someinstance>
set DATABASE=<somedb>
set USERNAME=<someuser>
set PASSWORD=<somepassword>
set "SCRIPTFOLDER=D:\<pathToScripts>\"
set "OUTPUTFOLDER=D:\<pathForOutput>\"
@Echo off
For /F "tokens=*" %%S in ('Dir /B "%SCRIPTFOLDER%*.sql" '
) do echo sqlcmd -S %INSTANCE% -d %DATABASE% -U %USERNAME% -P "%PASSWORD%" -i "%%~fS" -s "|" -o "%%~dpnS.csv" -W
@pause
Я запустил это в командном файле, и когда он сделал паузу, последняя строка сказала: «Система не может найти указанный файл».
Думая, что это, возможно, обратная косая черта в моих путяхЯ удалил их и поставил косую черту перед .sql
в строке for
, но получил те же результаты.
Удаление обратной косой черты вообще привело к появлению сообщения «Файл не найден» при запускевот так.