2011-10-26 12 views
0

複数のファイルに対して1つずつバッチコマンドを実行するにはどうすればよいですか。つまり、最初にファイルをあるフォルダから作業フォルダに移動し、ファイル名をCSV形式に変更し、sqlloaderスクリプトを呼び出し、2番目のsqlスクリプトを呼び出して、最後に別のsqlスクリプトを呼び出すことを意味します。すべてのファイルに対してですが、一度に1つのファイルに対して実行されます。下のように試しましたが、 "\ Downloads \ Validation \ Prestage * .psa"というエラーが発生しましたが、この時点では予期しないものでした)。ループ条件にワイルドカード* .psaを渡すことはできませんか?一度にファイルごとに多数のバッチコマンドを実行します。

ありがとう、ありがとうございます。

echo off 

    :MAIN 


    copy C:\Downloads\Prevalidation\*.psa C:\Downloads\Validation\Prestage\ 

    FOR %A IN (C:\Downloads\Validation\Prestage\*.psa) DO (move C:\Downloads\Validation\Prestage\*.psa C:\Downloads\Validation\WIP\ 
     ren C:\Downloads\Validation\WIP\*.psa *.csv 
    <call sqlloader now> 
    <call update script now> 
    <call validation script now> 
    ) 

    exit 

ありがとう、 サンダーズ。

答えて

0

あなたの戦略は正しいです。

小さな構文エラーが1つあります.BATファイル内のFORコマンドで%Aの代わりに%%Aを使用する必要があります。そして、処理中のファイルの名前としてループ内の%%Aを参照する必要があります。

@echo off 
copy C:\Downloads\Prevalidation\*.psa C:\Downloads\Validation\Prestage\ 
FOR %%A IN (C:\Downloads\Validation\Prestage\*.psa) DO ( 
    move %%A C:\Downloads\Validation\WIP\%%~nA.psa 
    ren C:\Downloads\Validation\WIP\%%~nA.psa *.csv 
    <call sqlloader now> 
    <call update script now> 
    <call validation script now> 
) 
+1

PA - お返事ありがとうございます。しかし、私はまだスクリプトを実行中に構文エラーを取得しています。 MAIN コピーC: - HERESに私のスクリプトは をオフにエコー\ダウンロード\事前検証\ * PSAのC:\ダウンロード\検証\プレステージ\ FOR %% A IN(C:\ダウンロード\検証\プレステージ\ *。。 psa)DO( move %% AC:\ Downloads \ Validation \ WIP \ %%〜nA.psa ren C:\ Downloads \ Validation \ WIP \ %%〜nA.psa psaload.csv C:\ CAP_SPS \ Batchscripts \ コールC runloader.bat:\ CAP_SPS \ Batchscripts \ コールC runupdate.bat:\ CAP_SPS \ Batchscripts \ デルC runvalidation.bat:\ダウンロード\検証\ WIP \ psaload.csv ) 終了 – user982201

+1

@ user982201 :私は、 'move'コマンドと' ren'コマンドで名前の前後に引用符を使用することをお勧めします。 「%A」「C:\ Downloads \ Validation \ WIP \ %%〜nA.psa」を入力してください。 –

+0

@Andriy +1良いコメント。 –