bat файл исполняющий файлы против БД из папки

У меня есть Ingres DB, и я храню все файлы процедур в папке, если мне нужно восстановить их на БД. Существует множество процедур, относящихся к eachohter (называемых друг от друга), так что это означает, что ai должен сначала запустить какой-то процесс, а затем запустить другой. Прямо сейчас я использую файл bat, в котором я должен указать имя файла, и мне нужно сделать это вручную, один за другим. Для этого я использую этот bat-файл.

echo '' > sqlout
more sqlout
set /p database="Enter database:"
if "%database%"=="" set database=1507
CALL C:\"Program Files"\Ingres\..\..\bin\setingenvs.bat
set directory_name=DBProcs
:While

set /p filename="Enter Procedure Filename:"
echo %filename%
sql DBServerName::%database% -udba <D:\Php_Web_Source\..\DBProcs\%filename% > sqlout
more sqlout
set /p another="Do you have another? (Y/N)"
if "%another%"=="N" goto EndWhile
goto While
:EndWhile 

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

2 ответа

Если вы хотите перебрать все файлы в каталоге, это базовый цикл for.

for %%G IN (C:\mypath\*.*) do echo %%G

%%G будет путем с именем файла в этом случае. Затем вы можете запустить любую команду с этой переменной.

Если вы не часто добавляете новые файлы, которые необходимо запустить, то одним из вариантов будет просто написать один файл sql, который вызывает все остальные ваши скрипты.

Например:

\cd D:\Php_Web_Source\..\DBProcs\
\read proc1.sql
\read proc2.sql
\read proc3.sql

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

dir/b *.sql > files.txt

Выдаст вам список всех файлов sql в одном каталоге (вы можете настроить команду, если вам нужно несколько каталогов). Затем с помощью поиска и замены Regex

\r\n

с

\r\n\\read   

бы получить то, что вам нужно.

Как я уже сказал, это быстрый метод, если ваши файлы изменяются не часто или как быстрый и грязный метод. Ответ Сквошмана более правильный для регулярно меняющейся файловой структуры.

Другие вопросы по тегам