優先度を変えてプログラムを起動する方法

 オイラがウチで使ってる Windows マシンは、かれこれ7年くらい前に買ったもの。最近は重いサイトをブラウザで表示させるだけで CPU 使用率が 100% になったりして、そろそろ買い替え時かなぁという気はしている。
 というか、10回に1回起動しないとか、そろそろヤバイかもしれんw


#もちろんメインのマシンは別にあるんだけど。そっちにはFedora入ってる。


 とはいえ、買い替える前に、せめて出来ることはやっておこうと思った。オイラが使用するアプリケーションのうちいくつかは、バックグラウンドで走らせておけばよく、それほど処理時間の速さは要求してない。
 Unix 系 OS だと nice 値を変更してプロセスごとの優先度を変えられるが、同じようなことを Windows でできないだろうか。そうすれば、プロセスの処理速度の重要度次第で優先度を下げたりもできる。


 というわけで twitterつぶやいてみたら、@ktat さん、@ywatase さんから情報をいただいた。(ありがとうございます!)
 昨日は上手くいかなかったのだが(まぁ風邪でぶっ倒れていた上、酒入ってたのでww)、今日もう一度試したら上手くいったので情報共有。


 まずは @ktat さんにいただいた情報
 start コマンドというのを使うといいらしい。


 start というのは Windows のビルトインコマンドで、「指定されたプログラムまたはコマンドを実行するためにウィンドウを開く」(start /? で表示されるヘルプの内容より)。
 この説明だけだと、普通にプログラムを起動するのと何が違うの?ってことになるが、start コマンドではオプションをいろいろ指定できる。

START ["タイトル"] [/Dパス] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED]
      [/LOW | /NORMAL | /HIGH | /REALTIME | /ABOVENORMAL | /BELOWNORMAL]
      [/WAIT] [/B] [コマンド/プログラム]
       [パラメータ]

 実行優先度に関係するのは、上の2行目のオプション。/LOW が一番低く、これを指定すれば優先度:低でプログラムを起動することができる。
 例えば、オイラのマシンに入っている iTunes (C:\Program Files\iTunes\iTunes.exe)を、優先度:低で起動したい場合は、コマンドプロンプト

start /LOW "C:\Program Files\iTunes\iTunes.exe"

と入力すればよい。
 ……はずだ。はずなのだが、これだとなぜか上手くいかない。一応新しいコマンドプロンプト画面は出てくるのだが、肝心の iTunes は起動せず。
 結局、昨日は解決しないまま終了。


 今日改めて調べてみたところ、こんな情報が見つかった。

 最初に試した例では、実行ファイルへのパスで「Program Files」のところに空白が含まれているため、両側をダブルクォートで囲って実行したのだが、start コマンドでこれを使うと正常に動かないらしい。
 解決方法は、ダブルクォートで囲まなくてもいいようなパス表記(いわゆる8.3文字表記)にする、だそうだ。根本的な解決になってない気もするけど仕方ない。w

start /LOW C:\Progra~1\iTunes\iTunes.exe

 「Program Files」を、あの忌まわしい「Progra~1」表記にするのかー(ェー


 まぁとりあえずこれで優先度を変えて起動することができた。atmarkit の記事にもあるとおり、ショートカットを登録しておくと便利か。

 ということで、まとめ。

  1. 優先度を変えてプログラムを起動するには、start コマンドで起動し、その際優先度を指定。
  2. 実行プログラムのパス名は、いわゆる 8.3 文字表記にし、両側はダブルクォートで囲まないこと。(Program Files → Progra~1 など)


 ちなみに、ようやく成功して面白がって優先度いろいろ変えてたら、マシンがフリーズしたorz やりすぎに注意。


 @ywatase さんに紹介していただいた Process Explorer についてはこの次で。