コマンドライン引数

コマンドライン引数とは

プログラムは起動時にパラメーターを渡すことができます。
プログラムはそのパラメーターによって通常の起動とは違う処理をさせることができます。

例えばWindowsのメモ帳を開く場合、そのまま起動すれば何も中身のない新規ファイルが開かれます。
しかしメモ帳に何らかのテキストファイルをドラッグ&ドロップすれば、そのファイルが開かれた状態でメモ帳が起動します。

メモ帳の通常起動
メモ帳にファイルをドラッグ&ドロップして起動

実行ファイル(○○.exe)にファイルをドラッグ&ドロップすると、以下のような起動パラメーターがプログラムに渡されます。
コマンドプロンプトから起動

「C:\Program.cs」というのはドラッグ&ドロップしたファイルのパス(ディスク上の場所)です。
この文字列をコマンドライン引数といいます。
メモ帳はこの文字列を元にファイルを開きます。

ファイルのパスをコマンドライン引数に指定して起動するとそのファイルが開かれた状態でメモ帳が起動するのは、メモ帳がそのように作られているからです。
プログラムがどのようなコマンドライン引数を受け取れるかはそのプログラム次第です。

コマンドライン引数を受け取る

C#でコマンドライン引数を受け取るには、Main関数の引数を利用します。


//argsにコマンドライン引数が格納されている
static void Main(string[] args)
{
    if(args.Length == 0)
    {
        Console.WriteLine("何かファイルをドラッグ&ドロップしてください");
    }
    else
    {
        for (int i = 0; i < args.Length; i++)
            Console.WriteLine(args[i]);
    }
    Console.ReadLine();
}

Main関数の引数にstring型の配列を指定します。
Visual Studioが自動生成するコードならば最初からargsという名前で記述されているはずです。
このstring型配列argsにコマンドライン引数が格納されています。

このコードをビルドしてそのまま起動しても「何かファイルをドラッグ&ドロップしてください」と表示されるだけです。
ビルドして作成された実行ファイルに対して適当なファイルをドラッグ&ドロップしてみてください。
そのファイルのパスが表示されるはずです。

C¥test.txt

ビルドした実行ファイルはプロジェクトフォルダ内の「bin\Debug」フォルダ内にあります。

複数のファイルを同時にドラッグ&ドロップすればその数だけパスが表示されます。
コマンドライン引数は半角スペースを区切り文字としてそれぞれの文字列をstring型配列の要素に格納します。

渡されるのはただのstring型配列ですから、後は自由に加工して起動パラメーターを作ることができます。

Visual Studioでのビルド時にコマンドライン引数を渡す

プログラムの作成中は毎回ビルド後にコマンドライン引数を渡して起動するのは面倒ですし、何よりデバッグ作業ができません。
その場合はプロジェクトの設定でビルド時にコマンドライン引数を渡すことができます。

上部メニューから「プロジェクト→(プロジェクト名)のプロパティ」を開きます。
プロジェクトのプロパティを開く

開いた設定画面の左側から「デバッグ」を選択し、右側の「コマンドライン引数」の欄にコマンドライン引数を記述します。
プロジェクトのプロパティでコマンドライン引数を設定

ここで設定した文字列がビルド後にコマンドライン引数として渡されることになります。