Visual Studioでコマンドライン引数を設定する方法と、タスクスケジューラから設定する方法を調べてみました。
【検証環境】.NET 5.0 / コンソールアプリ
コマンドライン引数とは
コマンドライン引数とは、Mainメソッド(エントリー ポイント)の引数です。
よく見かけるMain(string[] args) です。
普段あまり使うことはありませんが、使いどころを考えてみました。
実行する際に引数の値に応じて、処理の内容を変えたい場合などに使うと便利だと思います。わざわざプロジェクトを分けて複数作成する必要が無くなるため、コマンドライン引数で処理を制御するような使い方ができます。
Visual Studioで設定
ソリューションエクスプローラー > プロジェクト右クリック > プロパティ で下記のような画面が表示されます
デバッグ を選択し、デバッグ起動プロファイルUIを開く を選択します
すると、コマンドライン引数 から設定することができます
コマンドライン引数は複数設定することができます。その際は、半角スペースを空けて入力します。保存ボタンなどはなく、入力したら右上の×で閉じます
この状態で、下記のコードを実行してみます
static void Main(string[] args)
{
foreach (var arg in args)
{
Console.WriteLine(arg);
}
}
設定した値がargsに渡されていることが確認できました
タスクスケジューラで設定
Visual Studioでの設定はデバッグ用です。実際にツールなどとして使う際は、タスクスケジューラで引数を設定したりして使うことになると思います。
タスクスケジューラとは指定した日時や間隔でプログラムを起動させることができます。詳しい使い方はここでは割愛します。
タスクスケジューラでは、下記の画面で設定が出来ます。(タスクの作成 > 操作タブ > 新規)
例えば、この時間にはAという処理、この時間ではBという処理…といった使い方をしたい場合に、設定したコマンドライン引数でA処理を行うか、B処理を行うか、などを決めることができます。
一つの実行ファイルでコマンドライン引数の値に応じて処理を変化することができるため、使いようによっては便利に感じますね。
使う場合は下記のようなコードになるかと思います。
static void Main(string[] args)
{
if (args.Length == 0)
{
Console.WriteLine("引数がありません");
return;
}
if(args.Length > 1)
{
Console.WriteLine("引数が複数あります");
return;
}
var commandArg = args[0];
switch (commandArg)
{
case "A":
Console.WriteLine("処理A");
break;
case "B":
Console.WriteLine("処理B");
break;
default:
Console.WriteLine("引数が正しくありません");
break;
}
}
exeファイルのショートカットに設定
exeファイルのショートカットのプロパティを見ると、下記のようになっています。
ここのリンク先を見ると、exeファイルが指定されています。ここに半角スペースを空けて文字列を入力することでコマンドライン引数を設定することもできます。
ブラウザにコマンドライン引数でURLを渡すとそのページを開いてくれますので、実際に試してみましょう。
「https://pg-life.net/」を引数に渡してOKクリック後にショートカットをクリックすると、ブラウザでホーム画面ではなく引数に渡したURL先を直接開いたことが確認できました。