2017-12-29 2 views
0

このコードを使用して、アクティブプロセスのリスト内でループを実行し、プロセスを名前で識別して優先度を変更します。batファイルループが早すぎると停止します

TIMEOUT /T 1 
for /F "tokens=1,2" %%i in ('tasklist /FI "IMAGENAME eq java.exe" /fo table /nh') do set pid=%%j 
echo %pid% 
wmic process where processid=%pid% CALL setpriority 128 
exit 

私の問題は、「java.exe」という複数のプロセスがありますが、それらをすべて自分のコードで実行したいのです。どうすればこれを達成できますか?

+0

[Delayed Expansion](https://ss64.com/nt/delayedexpansion.html)トラップ.... – SteveFest

+0

forループブロックがありませんでした。 forループの唯一のコマンドは 'set'です。 –

答えて

0
for /F "tokens=1,2" %%i in ('tasklist /FI "IMAGENAME eq java.exe" /fo table /nh') do (
echo %%j 
wmic process where processid=%%j CALL setpriority 128 
) 

(未テスト)

+0

は魅力的に働いています - ありがとう!明けましておめでとうございます – piguy

0

このメソッドは、変数pid使用できるようになりますが、あなたが遅れた拡張を使用する必要があります。

SETLOCAL ENABLEDELAYEDEXPANSION 
for /F "tokens=1,2" %%i in ('tasklist /FI "IMAGENAME eq java.exe" /fo table /nh') do set pid=%%j 
echo !pid! 
wmic process where processid=!pid! CALL setpriority 128 
exit 
  • setlocalラインは、ないフレーズタイム実行時に変数を処理するためにcmdをできるようにすることです。

  • !は、実行時にフレーズ時間ではなく変数を処理することを示します。

関連する問題