1

このスレッドの助けを借りて、特定のプロセスの数を取得します。

バッチファイルを使用して、現在実行中の同名のプロセスの数をカウントする方法

このコマンドの結果を変数に代入し、その変数を数値と比較したいと考えています。私のコードは以下のようにリストされています:

@echo off
setlocal enabledelayedexpansion 
set procName=chrome.exe
set a=tasklist /FI "IMAGENAME eq %procName%" 2>NUL | find /I /C "%procName%"
if !a! equ 1 (
    echo !a!
    echo %procName% starts to run...
) else (
    echo !a!
    echo %procName% has not run!
)

ここで、'set a=tasklist /FI "IMAGENAME eq %procName%" 2>NUL | '0' を取得しました。find /I /C "%procName%"' コマンド。また、「エコー !a!」の「エコー クローズ」のヒントも得られます。

参考までに、cmdで次のコマンドを実行すると

tasklist /FI "IMAGENAME eq chrome.exe" 2>NUL | /c /i "chrome.exe" を見つける

a=タスクリスト/FI "IMAGENAME eq chrome.exe" 2>NUL | を設定します。/c /i "chrome.exe" を見つける

出力はそれぞれ 16 と 0 です。

どういう理由ですか?コマンドの結果を変数に代入するにはどうすればよいですか? 変数を数値と比較する方法は?

どうもありがとう!

4

3 に答える 3

1

まあ、私もうまくいきset a=tasklist /FI "IMAGENAME eq chrome.exe" 2>nul | find /c "chrome.exe"ません。それがどのように機能するのかわからないので、これは良いことです。

FIND.EXE書き込み、読み取り、削除のオーバーヘッドがないため、これはより高速になると思いますproc_temp

set a=0
for /f "skip=3" %%x in ('tasklist /FI "IMAGENAME eq chrome.exe"') do set /a a=a+1
echo Total chrome.exe tasks running: %a%

編集:set /a拡張変数を必要としないことを発見したので、 setlocalandendlocalコマンドを削除し、set /a構文を変更しました。

于 2012-09-01T16:54:41.187 に答える
0

環境内のこの行の後に、求められているプロセスの pid があります

for /F "tokens=1,2,*" %%a in ('tasklist /fi "imagename eq %procName%"') do if !%%a!==!%procName%!  set a=%b
于 2012-08-31T09:31:22.723 に答える
0

私は解決策を見つけたと思います:

tasklist /fi "imagename eq %procName%" 2>nul | findstr /i %procName% | find /c /v "">proc_temp
set /p current_num= < proc_temp
echo !current_num!

また、コードを簡素化できると思います。あなたの何人かが簡単なバージョンを提供できることを願っています:)

于 2012-09-01T04:58:19.670 に答える