1

SQL Server 2008r2 で大量のスクリプトを実行する必要があります。これらのスクリプトは、多くのフォルダーとサブフォルダーに存在します。これらのスクリプトを実行するバッチ ファイルを作成しましたが、問題は、このバッチ ファイルをフォルダーに配置して、関連するスクリプトを実行する必要があることです。フォルダーのスクリプト.したがって、10を超えるフォルダーがある場合、このbatファイルを1つのフォルダーに10回配置する必要があります.batファイルを好きな場所(デスクトップなど)に1回だけ配置できる方法はありますか?フォルダのファイルを実行しますか?

.bat ファイル:-

for %%G in (*.sql) do sqlcmd /S %1 /d %2 -E   -i"%%G" pause

コマンドプロンプトを使用してサーバー名とデータベース名を渡します。

4

2 に答える 2

1

/Rにオプションを追加して、FOR再帰的に検索します。

FOR /R . %%G IN (*.sql) DO ... etc ...

これにより、現在のディレクトリ ( ) の下の *.sql ファイルが検索されます.。またはFOR /R C:\Folder %%G IN (*.sql) DO ...、特定のフォルダーをルートにしたい場合に作成します。

于 2013-03-09T18:01:12.993 に答える
1

同じサーバー名とデータベース名を使用して、複数のディレクトリから yourbatasposted を実行したいと仮定すると、

@ECHO OFF
SETLOCAL
FOR /f "delims=" %%i IN (folderlist.txt) DO (
PUSHD "%%i"
CALL yourbatasposted %*
POPD
)

ここで、folderlist.txt は、ターゲット ディレクトリ名を 1 行に 1 つずつ含む単純なテキスト ファイルです。

どのサーバー/データベース/ディレクトリを個別に実行するかを制御する場合は、次の行としてフォーマットされた controllist,txt を作成します。

servername データベース ディレクトリ

@ECHO OFF
SETLOCAL
FOR /f "tokens=1,2*delims=Q" %%i IN (controllist.txt) DO (
PUSHD "%%k"
CALL yourbatasposted %%i %%j
POPD
)

"Q" は、controllist.txt の列間の区切り文字です。スペースを使用する場合は、delims= 句を省略します。

当然、yourbatchasposted.bat は、%path% 変数に記載されている任意のディレクトリに配置する必要があります...

于 2013-03-10T01:21:53.060 に答える