他のリアルタイム アプリケーションのパフォーマンスへの影響を最小限に抑えるために、一部の (imagemagick 画像処理) バッチ ジョブを単一の論理プロセッサのバックグラウンドで実行するように自動的に制限したいと考えています。
私がまとめた方法は、コマンド ライン引数をフラグとして使用することです。バッチ ファイルが最初にコマンド ライン引数なし (およびアフィニティなし) で開始されると、アフィニティが最後の論理プロセッサに設定された状態で再び開始され、アフィニティが設定されていることを示す仮引数が追加され、バッチ ジョブ:
REM START OF THISBATCHFILE.CMD
IF NOT [%1]==[] GOTO AFFINITY_SET
SET LAST_PROCESSOR=1
FOR /L %%I IN (2,1,%NUMBER_OF_PROCESSORS%) DO SET /A LAST_PROCESSOR*=2
PROCESSOR = %LAST_PROCESSOR%
START /B /AFFINITY %LAST_PROCESSOR% THISBATCHFILE.CMD DUMMY_ARGUMENT
EXIT 0
:AFFINITY_SET
REM Batch Job Starts Here
REM ImageMagick command 1
REM ImageMagick command 2
REM ...
REM ImageMagick command N
REM Batch Job Ends Here
EXIT 0
これは、バッチ ジョブを最後の (4 番目の) 論理プロセッサに限定するために、私の 4 コア Win8.1 システムで問題なく動作しているようです。私の質問は - これを行うための「より良い」方法はありますか?