MSQL で SQL を実行することについては何も知りません。MSQL 用に提供されているコマンドライン ユーティリティを使用して、適切なデータベースに対して各スクリプトを実行する方法を検討する必要があります。
SQL ファイルを正しい順序で並べ替え、データベースの名前を解析するバッチ ファイルの作成をお手伝いします。
シーケンス番号の前にゼロを付けて幅を一定にすると、ジョブはバッチではるかに簡単になります。ファイルの名前を変更しても問題ないと思います。それがこのソリューションの機能です。
また、処理するファイルが 999 個を超えることはないと仮定しました。コードを簡単に変更して、より多くの処理を行うことができます。
!
ファイル名に文字が含まれている場合は、展開が遅れると FOR 変数の展開が破損するため、いくつかの変更を行う必要があります。しかし、それはありそうもない問題です。
@echo off
setlocal enableDelayedExpansion
:: Change the definition to point to the folder that contains the scripts
set "folder=sqlCodeFolder"
:: The mask will only match the pattern that you indicated in your question
set "mask=[*] [*]*.sql"
:: Rename the .sql files so that the sequence numbers are zero prefixed
:: to width of 3. This enables the default alpha sort of the directory to be
:: in the proper sequence
for /f "tokens=1* delims=[]" %%A in ('dir /b "%folder%\%mask%"') do (
set seq=00%%A
ren "%folder%\[%%A]%%B" "[!seq:~-3!]%%B"
)
::Process the renamed files in order
for %%F in ("%folder%\%mask%") do (
for /f "tokens=2 delims=[] " %%D in ("%%~nF") do (
rem %%F contains the full path to the sql file
rem %%D contains the name of the database, without enclosing []
rem Replace the echo line below with the proper command to run your script
echo run %%F against database [%%D]
)
)