2016-12-08 3 views
0

私はIngres DBを持っており、DB上でそれらを再構築する必要がある場合は、すべての手続きファイルをフォルダに保存します。 eachohterに関連する多くの手順があります(別のものから1つと呼ばれています)。そのため、平均的なアイが最初にいくつかのproceudreを実行し、次にotherを実行する必要があります。今、私はファイル名を提供しなければならないバットファイルを使用しており、手作業でそれを行うためにはフォアファーを取っています。私はこのバットファイルを使用しています。フォルダからDBに対してファイルを実行するバットファイル

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ファイルを実行し、フォルダ内のすべてのファイルを実行する必要がありますしたいのですが、それを行う方法がわかりません。私はforループのようなものを考えていましたが、フォルダー内の各ファイルのバットは存在しますが、どのように役立つか分かりません。

+0

こんにちはAndrey、私はあなたの痛みの使い方についてちょっと不思議です。 'C:\ Program Files \ Ingres \ .. \ .. \ bin \ setingenvs.bat'は' C:\ bin \ setingenvs.bat'と同じです。 ! 'D:\ Php_Web_Source \ .. \ DBProcs \%filename% 'と同じものが' D:\ DBProcs \%filename% 'に解決されるか、コードを難読化する方法ですか? – LotPings

+0

はい、パットは長いですね、私はそれをここではもっと短くします:) – Andrey

答えて

2

ディレクトリ内のすべてのファイルを反復したい場合は、 forループ。

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

%% Gは、このインスタンスのファイル名のパスになります。その変数で任意のコマンドを実行できます。

+0

stilは、各ファイルのバッチファイルを呼び出す方法を理解しています。 – Andrey

+0

@Andrey、私はデータベースについては何も知らない。あなたのSET/Pコマンドを置き換えると仮定しました。 'set/p filename ="プロシージャファイル名を入力してください: "' – Squashman

+0

私は自分の質問にある他のバッチファイルを呼び出し、そこにファイル名をパラメータとして渡すことはできません。しかし、ちょうど理解していない – Andrey

1

実行する必要がある新しいファイルを頻繁に追加しない場合、1つのオプションは、他のすべてのスクリプトを呼び出す単一のSQLファイルを単純に書き込むことです。

例えば

:あなたはまた、すべてのファイルのリストを取得して、クイック検索を行うと、

dir/b *.sql > files.txt 
を置き換えるために、メモ帳++などのツールを使って、かなり迅速に、このスクリプトを作成することができます

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

1つのディレクトリにすべてのsqlファイルのリストを表示します(複数のディレクトリが必要な場合はコマンドを調整できます)。そして、あなたが必要なものになるだろう

\r\n\\read 

\r\n 

を正規表現検索を使用して交換してください。

このように、ファイルが頻繁に変更されたり、迅速で汚い方法として変更されたりしない場合、これは簡単な方法です。スクワッシュマンの答えは、定期的に変化するファイル構造の方がより正確です。

関連する問題