DOS コマンドを使用して、(a) 他のバッチ ファイルを実行するか、(b) SQLCMD を実行して SQL または SQL スクリプトを実行するバッチ ファイルを作成しようとしているようです。
以下は、すべてが 1 つにまとめられた 2 つの例です。START
スイッチ付きの DOS コマンドを使用して/WAIT
います。これにより、元の「マスター」バッチ ファイルが 1 つのウィンドウで実行されたままになり、後続のファイルまたはコマンドが新しいウィンドウで実行されます。その新しいウィンドウは、スクリプトが終了して終了するまで開いたままになります。
一部の はECHO
おそらく必須ではありませんが、スクリプトは今のところ、少しだけ応答します。
@echo off
つまり、スクリプトを実行しているだけという意味で、これは非常に単純です。script1.bat にブレーク ポイントがある場合は、メイン スクリプトにエラーを返して、すぐに終了させることができます。それがマスター スクリプトで実行する必要があるかどうかはわかりませんでした。
echo Starting Database Update.
echo.
echo Excuting Script 1
echo.
start /wait C:\path\to\your\script1.bat
echo If there was a problem, break here.
Pause
echo Excuting Script 2
echo.
start /wait C:\path\to\your\script2.bat
echo If there was a problem, break here.
Pause
これは、同じ START /WAIT を使用して SQLCMD を実行した場所です。この場合は、クエリから結果を返すだけです。ここで注意すべきことの 1 つは、-Q
(大文字) がクエリを実行して終了することです。(小文字)を使用する-q
と、クエリが実行され、別のクエリを待機する SQLCMD で開いたままになります。
echo.
echo Running SQLCMD: "select top 100 * from sys.objects"
start /wait sqlcmd -S (local) -Q "select top 100 * from sys.objects"
そして、これは SQL スクリプトを実行する方法です。これは が-i
示すものですが、以前のように START /WAIT でこれを実行しませんでした。しなければならないというわけではありませんが、両方の例を示したかったのです。これは、スクリプトがエラーを返した場合にバッチ プロセスを終了することも示してい-b
ます。これは、前者の成功に依存する複数のスクリプトを実行している場合に役立ちます。
echo.
echo Running SQLCMD from an (-i)nput file:
sqlcmd -S (local) -i C:\path\to\your\script.sql -b
echo.
echo Update Complete.
pause
End
したがって、SQLCMD を利用した .bat または .cmd ファイルを探していると想定しました。私が提供した例はかなり基本的なものですが、うまくいけば、正しい道に進むことができます.
おー!また、CTRL+C は処理中のバッチ スクリプトを中断することに注意してください。