これは、コマンドプロンプト(cmd.exe) Advent Calendar 2015 - Qiitaの2日目の記事です。※Windows 10 Home 64bit 搭載のcmd.exeにて検証を行っています。

start /?

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
指定されたプログラムまたはコマンドを実行するためにウィンドウを開きます。

START ["タイトル"] [/D パス] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED]
      [/LOW | /NORMAL | /HIGH | /REALTIME | /ABOVENORMAL | /BELOWNORMAL]
      [/NODE <NUMA ノード>] [/AFFINITY <16 進数の関係マスク>] [/WAIT] [/B]
      [コマンド/プログラム] [パラメーター]

    "タイトル"  ウィンドウのタイトル バーに表示するタイトル。
    パス        開始するディレクトリ。
    B           新しいウィンドウを作成せずにアプリケーションを起動します。
                アプリケーションは Ctrl + C を無視します。
                アプリケーションで Ctr l+ C を有効にしていない場合、
                Ctrl + Break がアプリケーションを中断する唯一の方法です。
    I           新しい環境は、現在の環境ではなく、cmd.exe に渡された元の環境に
                なります。
    MIN         ウィンドウを最小化の状態で起動します。
    MAX         ウィンドウを最大表示の状態で起動します。
    SEPARATE    16 ビットの Windows プログラムを別メモリ領域で起動します。
    SHARED      16 ビットの Windows プログラムを共有メモリ領域で起動します。
    LOW         IDLE 優先度クラスでアプリケーションを起動します。
    NORMAL      NORMAL 優先度クラスでアプリケーションを起動します。
    HIGH        HIGH 優先度クラスでアプリケーションを起動します。
    REALTIME    REALTIME 優先度クラスでアプリケーションを起動します。
    ABOVENORMAL ABOVENORMAL 優先度クラスでアプリケーションを起動します。
    BELOWNORMAL BELOWNORMAL 優先度クラスでアプリケーションを起動します。
    NODE        優先 NUMA (Non-Uniform Memory Architecture) ノードを 10 進の
                整数で指定します。
    AFFINITY    プロセッサの関係マスクを 16 進数で指定します。
                プロセスはこれらのプロセッサで実行されるように制限されます。

                /AFFINITY と /NODE を組み合わせると、関係マスクは異なって
                解釈されます。NUMA ノードのプロセッサ マスクを右にシフトして
                ビット 0 で始まるかのように関係マスクを指定します。
                プロセスは、指定した関係マスクと NUMA ノードの間で共通する
                プロセッサ上で実行されるように制限されます。共通するプロセッサ
                がない場合は、プロセスは指定した NUMA ノード上で実行される
                ように制限されます。
    WAIT        アプリケーションを起動し、終了するまで待ちます。
    コマンド/プログラム
                内部コマンドまたはバッチ ファイルの場合、コマンド プロセッサ
                は cmd.exe の /K オプションを使用して実行されます。
                これはコマンドの後でもウィンドウが残ることを意味
                します。

                内部コマンドまたはバッチ ファイルではない場合、そのプログラム
                はウィンドウ モードのアプリケーションまたはコンソール 
                アプリケーションとして動作します。

    パラメーター
                コマンド/プログラムに渡すパラメーターです。

注意: SEPARATE および SHARED オプションは 64 ビット プラットフォームでは
サポートされません。

/NODE を指定すると、NUMA システム上のメモリ局所性を利用する方法でプロセスが
作成されるようにできます。たとえば、共有メモリ経由で互いに頻繁に通信する
2 つのプロセスを、メモリ待ち時間を最小限に抑えるために同じ優先 NUMA ノードを
共有するように作成できます。これらのプロセスは可能であれば同じ NUMA ノードから
メモリを割り当て、指定したノード外のプロセッサ上で実行されることもあります。

    start /NODE 1 application1.exe
    start /NODE 1 application2.exe

これら 2 つのプロセスは、さらに、同じ NUMA ノード内の特定のプロセッサ上で
実行されるように制限できます。次の例では、application1 がノードの低順位の
2 つのプロセッサ上で実行されるのに対し、application2 はノードの次の 2 つの
プロセッサ上で実行されます。この例では、指定したノードに少なくとも 4 つの
論理プロセッサがあることを想定しています。ノード番号は、関係マスクを変更しなく
ても、そのコンピューターの任意の有効なノード番号に変更できることに注意して
ください。

    start /NODE 1 /AFFINITY 0x3 application1.exe
    start /NODE 1 /AFFINITY 0xc application2.exe

コマンド拡張機能を有効にすると、コマンド ラインまたは START コマンドに
よる外部コマンドの起動は、次のように変更されます:

非実行可能ファイルは、ファイル名をコマンドとして入力することによって、
    ファイルの関連付けを使って開くことができます (例:  WORD.DOC は .DOC 
    ファイル拡張子に関連付けられているアプリケーションを起動します)。
    コマンド スクリプト内でファイルの関連付けを作成する方法については、
    ASSOC と FTYPE コマンドを参照してください。

32 ビット GUI アプリケーションを実行する場合、CMD.EXE は、
    アプリケーションの終了を待たずにコマンド プロンプトに戻ります。
    コマンド スクリプト内で実行する場合は、
    この動作は発生しません。

最初のトークンが拡張子やパス修飾子を持たない文字列 "CMD" であるコマンド 
    ラインを実行する場合、"CMD" が COMSPEC 変数の値で
    置き換えられます。
    これにより現在のディレクトリの CMD.EXE が使われないようにします。

最初のトークンが拡張子を含まないコマンド ラインを実行する場合、CMD.EXE 
    は、PATHEXT 環境変数の値を使って拡張子の種類と順序を判断します。
    PATHEXT 変数の既定値は、次のとおりです:

        .COM;.EXE;.BAT;.CMD

    この構文は PATH 変数と同じであり、各要素はセミコロンで区切られて
    いることに注意してください。

実行可能なファイルを検索するときにどの拡張子でも一致するファイルが見つ
からない場合は、拡張子なしの名前がディレクトリ名と一致するかどうかを
調べます。
一致する場合は、START コマンドがそのパスでエクスプローラーを起動
します。コマンド ラインから実行した場合は、そのパスに対する CD /D の実
行と同じになります。

よく使うオプション

1
2
3
4
5
    B           新しいウィンドウを作成せずにアプリケーションを起動します。
                アプリケーションは Ctrl + C を無視します。
                アプリケーションで Ctr l+ C を有効にしていない場合、
                Ctrl + Break がアプリケーションを中断する唯一の方法です。
    WAIT        アプリケーションを起動し、終了するまで待ちます。

/B オプション

通常startコマンドでコマンドを実行すると新しい窓が開きますが、/Bで実行すると窓が開きません。
cmd.exeを起動して試してみましょう。

1
2
3
start cmd
start /b cmd

ほらね!

/WAIT オプション

小窓が終わるまで待ちます。
(このオプションをつけないと、待たずに突っ走ります)

1
2
start /wait cmd

待ちました。
なんだかんだで普段はあんまり複雑なオプションは使わないみたいです。
……昨日より雑ですが、こんな感じで。