- - PR -
【バッチファイル】tasklistの実行結果取得方法について
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2009-03-10 01:12
tasklistを使用して特定のユーザがあるプロセスを起動しているかどうか
判断し、IF文で起動している場合としていない場合の処理を 行いたいと思っています。 ただし、tasklistの実行結果はerrorleveでは取れません。 (プロセスが存在してもしなくても常に0となっている) tasklistの結果でIF文判定させるよい方法がありましたら、ご教授頂けないでしょうか。 コマンド例 tasklist /FI "USERNAME eq test01" /FI "IMAGENAME eq excel.exe" | ||||
|
投稿日時: 2009-03-10 07:50
効率がいまいちですが find をいれたらどうでしょう
tasklist /FI "USERNAME eq test01" /FI "IMAGENAME eq excel.exe" | find "IMAGENAME" | ||||
|
投稿日時: 2009-03-10 10:10
@echo off for /F "usebackq tokens=1" %%i in (`tasklist /FI "USERNAME eq test01" /FI "IMAGENAME eq excel.exe" 2^>^&1`) do @set RESULT=%%i echo %RESULT% とか。 | ||||
|
投稿日時: 2009-03-10 10:46
ご回答頂きありがとうございます。
取り急ぎデューンさんのコマンドを試してみましたが、 戻り値は,プロセスがあってもなくても"tasklist"となってしまっており 判定出来ない状況となっております。 | ||||
|
投稿日時: 2009-03-10 11:14
IMAGENAMEは指定していますか? IMAGENAMEを指定していなければそうなるかもしれません。 ぜんぶ列挙してそこから抽出したいのであれば はむさんがおっしゃっているfindや、 もう少し凝った処理にしたいのであればfindstrなどを使って @echo off for /F "usebackq tokens=1" %%i in (`tasklist /FI "USERNAME eq test01" 2^>^&1 ^| findstr /C:"excel" /C:"word" /I`) do @set RESULT=%%i echo %RESULT% などとしてください | ||||
|
投稿日時: 2009-03-10 20:45
>IMAGENAMEは指定していますか?
IMAGENAMEを指定して検証しましたが、やはり"tasklist"がechoで 返されます。 @echo off for /F "usebackq tokens=1" %%i in (`tasklist /FI "USERNAME eq test01" 2^>^&1 ^| findstr /C:"excel" /C:"word" /I`) do @set RESULT=%%i echo %RESULT% 上記の通り動かしたのですが、プロセスが存在する場合もしない場合も 共通で"tasklist"が返されます。 度々申し訳ございませんが、再度ご教授頂けないでしょうか。 | ||||
|
投稿日時: 2009-03-11 13:34
なんだか自分の未熟さゆえ大がかりになってしまいました。
バッチファイルにして実行してみてください。 うまくいかない場合は REM echo %RESULT% のコメントをはずしてみてください
# デバッグ用のコメントが間違えてたので修正 [ メッセージ編集済み 編集者: デューン 編集日時 2009-03-11 13:38 ] | ||||
|
投稿日時: 2009-03-11 14:38
デューンさん>ありがとうございます。動作致しました。
はむ>下記のコマンドで起動成功失敗のerrorlevelが取れました。 tasklist /FI "USERNAME eq ユーザ名" | findstr プロセス名 echo %errorlevel% 起動時間などを比較し、どちらで行なうか検討したいと思います。 お二人とも、アドバイス頂き、誠にありがとうございました。 |
1