2

ムービー ファイルの入力ディレクトリとテキスト ファイルの出力ディレクトリを受け取るバッチ スクリプトがあります。このスクリプトは、ムービー ファイルをテキスト ファイルに解析する外部アプリケーションを実行します。このスクリプトには、その「Movie-Parser」の複数のプロセスを一度に (並行して) 実行する機能もあります。

この奇妙な問題が発生します。特定のディレクトリ (1 つまたは複数のファイルが含まれる) でスクリプトを実行すると、完全に機能します。スクリプトを実行して、毎回一度に 2 つの映画 (たとえば) をロードするように指示すると、スクリプトも正常に動作し、タスク マネージャーで 2 つのプロセスが実行されていることがわかります。別のディレクトリで同じ実行を実行すると、同じ結果が得られます。

しかし、それは奇妙なことです。コンソールを開いて、最初のコンソールで 1 つのディレクトリ (1 つのファイルを含む) でスクリプトを実行し、2 番目のディレクトリ (1 つのファイルを含む) でスクリプトを実行すると、 2 番目のコンソールで、突然、タスク マネージャーを見ると、2 つではなく 4 つの実行中のプロセスが表示されます。

並列プロセスを増やすと、タスク マネージャーにさらに多くのプロセスが表示されます。

この問題の原因は何ですか?

4

1 に答える 1

0

バッチファイルの変数に依存する可能性があります。おそらく、実行中のバッチファイルの両方のインスタンスが、ファイルへのパスを格納するために同じ変数を使用しています。たとえば、プロセス間で共有されるシステム環境の%1%を使用している場合、さまざまなインスタンスが相互通信する可能性があります。

追加を検討してください

setlocal 

バッチファイルに。たとえば、このMicrosoftのドキュメントを参照してください。

于 2013-03-22T18:46:40.360 に答える