バッチファイルが21個の別々のファイル(すべて非常に大きい)をダウンロードしています。私はいくつかのファイルがより良い(良い解決策ではない)を取得しようとする前に終了することを許可するためにタイムアウトがあり、それらがすべて一緒に実行される場合、私のシステムリソースをすべて使用し、すべてが停止します。FORループによって起動されるバッチファイルの制限数
FORループに/ WAITを置くことができます。その後、一度に1つのダウンロードタスクしか起動しません。 5つのダウンロードウィンドウを起動したいと思います。終了したら、次の5に進みます。終了するまでGOTOを使用しようとしましたが、動作しません。
rem *****Step 1*****
set tstart=0
set tend=5
set incr=1
FOR /L %%a IN (%tstart%,%incr%,%tend%) DO (start /ABOVENORMAL GET_PIECE_ENSEMBLE.bat %newformatdate% 0%%a %HH%)
timeout /t 30
:WAIT
if exist flagfile.* goto WAIT
それから私は、ファイル5-10をダウンロードする4つの以上のステップを持っている11-16、などしかし、それはダウンロードして、余分な長いを取る場合、スクリプトに沿って移動し、次への複数のファイルや移動のダウンロードを開始すべてのデータを最初にダウンロードする必要があります。私はここで2つのことを試しています:データがダウンロードを開始したことを確認するための短いタイムアウト(フラグファイルが存在する)と、フラグファイルが存在するのを待つ。しかし、待機は機能していない、スクリプトはまだ一緒に移動し、次の束をダウンロードし始めます。私の回避策はタイムアウトを600に設定することでしたが、データをダウンロードするのに10分以上かかったり、時にはハングアップして2時間かかります。すべての部分が一度に起動すると、ワークステーションがフリーズし、マシンを再起動する必要があります。
そして、ここではGET_PIECE_ENSEMBLEのコード、FORループで実行されるスクリプトです:上のアドバイスをお探し
set "newformatdate=%1"
set "ename=%2"
set "HH=%3"
echo %time% > flagfile.%ename%
wget -O C:/Data/DataFile_%HH%.%ename%.grb2 http://url/%newformatdate%.grib2
del flagfile.%ename%
のいずれかの作業(任意のアイデアを「flagfileが存在する場合は待機」の作り方なぜこのISN単純な引数があれば、FORループに入れてインスタンスの数を制限し、他の人が開始する前にダウンロードが終了するようにすることができますか?確かに、ネットワークの状態が非常に変化するタイムアウト間隔で推測するよりも優れた解決策があります。 GET_PIECE_ENSEMBLE
で
したがって、5回以上実行するのではなく、5つの完全なセットが完了するまで待ってから、次の5つのセットに移動しますか? – SomethingDark
いずれにしても、私はちょうど2つ以上(帯域幅を利用するため)を起動したいが、あまりにも多く、非常に遅くなり、ワークステーションをクラッシュさせるため、21個全てを起動したくない。 –