Как я могу перебрать следующий пакетный файл в цикле for с некоторым кодом SQL - PullRequest
0 голосов
/ 26 сентября 2019

Я пытаюсь написать пакетный код, который просматривает папку C:\XYZ со списком .bat файлов.Я хочу, чтобы код просматривал каждый файл .bat в папке, (который загружает некоторые данные в MSQL Server) , и выполняет некоторый код SQL для каждого файла .bat, прежде чем вернуться к следующему.bat файл и тд.

Мой код пока проходит по всем файлам .bat, затем выполняет код SQL, но вместо этого я хочу выполнить код SQL для каждого файла bat, прежде чем переходить к следующему.

Это для MSQL Server, использующего утилиту SQLCMD, встроенную в пакетный файл Windows с использованием цикла for.Проблема в моем синтаксисе, я просто не знаю, как заставить логику перебирать каждый файл .bat.

Это перебирает все файлы .bat, а затем выполняет SQL для них ...

CD "C:\XYZ"  
for /r %%i in (.\*.bat) do Call %%i  
SQLCMD -S ABC\SQLEXPRESS -E -d database -q "Some SQL code"

Хотя это и делает первую итерацию (всего 1 файл) того, что я на самом деле хочу, но не удается перебрать другие .bat файлы.

CD "C:\XYZ"  
for /r %%i in (.\*.bat) do  (  
    Call %%i
    SQLCMD -S ABC\SQLEXPRESS -E -d database -q "Some SQL code"  
)

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

1 Ответ

0 голосов
/ 26 сентября 2019

Итак, проблема, с которой я столкнулся, была связана с кодом SQLCMD ... решение было использовать «-Q» вместо «-q», чтобы он выходил из кода SQL и возвращался к следующему пакетному файлу,в противном случае он зависает на первом командном файле.

Подробнее о синтаксисе SQLCMD здесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...