このエントリーをはてなブックマークに追加


プログラムに渡された引数を取得する方法

プログラムの後ろに設定した(する)引数の値を取得するサンプルコードをC#とVisual Basicで紹介します。
引数を取得する手段を3種類紹介しています。

参考記事

テスト環境

  • Windows 10 ver.1909
  • Visual Studio 2019
  • .NET Core 3.1

System.Environment.CommandLine & System.Environment.GetCommandLineArgs

Environmentクラスにある、CommandLineとGetCommandLineArgsを使った
C#とVisual Basic(VB)のサンプルコードを紹介します。

  • System.Environment.CommandLine
    コマンドラインの文字列がそのまま返却されます。
    .NET Coreだとexeで起動しても、dllになるんですね!
    .NET Frameworkだとexeとなりました。
  • System.Environment.GetCommandLineArgs 引数をStringの配列に格納されます。
    本サンプルではループにて引数を1つずつ表示させています。

C#

using System;

class Program
{
    static void Main(string[] args)
    {
        String cmd;
        String[] opts;
      
        cmd = Environment.CommandLine;
        opts = Environment.GetCommandLineArgs();
        Console.WriteLine("CommandLine: " + cmd);
        int i = 0;
        foreach(String opt in opts)
        {
            Console.WriteLine("opts["+  i + "]: " + opt);
            i++;
        }
    }
}

Visual Basic

Imports System

Module Program
    Sub Main(args As String())

        Dim cmd As String
        Dim opts As String()

        cmd = Environment.CommandLine
        opts = Environment.GetCommandLineArgs()
        Console.WriteLine("CommandLine: " & cmd)
        Dim i As Integer = 0
        For Each opt As String In opts
            Console.WriteLine("opts[" & i & "]: " & opt)
            i += 1
        Next

    End Sub
End Module

実行結果

引数に 1 2 3 4 5 を渡し実行した結果となります。
どちらも当然、同じ出力となります。

  • C#
    D:\repos\EnvCmdCS\bin\Release\netcoreapp3.1>EnvCmdCS.exe 1 2 3 4 5
    CommandLine: D:\repos\EnvCmdCS\bin\Release\netcoreapp3.1\EnvCmdCS.dll 1 2 3 4 5
    opts[0]: D:\repos\EnvCmdCS\bin\Release\netcoreapp3.1\EnvCmdCS.dll
    opts[1]: 1
    opts[2]: 2
    opts[3]: 3
    opts[4]: 4
    opts[5]: 5
  • Visual Basic
    D:\repos\EnvCmdVB\bin\Release\netcoreapp3.1>EnvCmdVB.exe 1 2 3 4 5
    CommandLine: D:\repos\EnvCmdVB\bin\Release\netcoreapp3.1\EnvCmdVB.dll 1 2 3 4 5
    opts[0]: D:\repos\EnvCmdVB\bin\Release\netcoreapp3.1\EnvCmdVB.dll
    opts[1]: 1
    opts[2]: 2
    opts[3]: 3
    opts[4]: 4
    opts[5]: 5

Mainから取得する方法

Mainメソッドを見ると、argsが渡されています。
ここに引数が格納されているので、以下のC#, Visual Basicのサンプルコードで表示してみます。

C#

using System;

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("Argument count:" + args.Length);
        int i = 0;
        foreach(String opt in args)
        {
            Console.WriteLine("opts[" + i + "]: " + opt);
            i++;
        }
    }
}

Visual Basic

Imports System

Module Program
    Sub Main(args As String())
        Console.WriteLine("Argument count:" & args.Length)
        Dim i As Integer = 0
        For Each opt In args
            Console.WriteLine("opts[" & i & "]: " & opt)
            i += 1
        Next
    End Sub
End Module

実行結果

引数に A B C D を渡し実行した結果となります。
どちらも当然、同じ出力となります。

  • C#
    D:\repos\ArgsCS\bin\Release\netcoreapp3.1>ArgsCS.exe A B C
    Argument count:3
    opts[0]: A
    opts[1]: B
    opts[2]: C
  • Visual Basic
    D:\repos\ArgsVB\bin\Release\netcoreapp3.1>ArgsVB.exe A B C
    Argument count:3
    opts[0]: A
    opts[1]: B
    opts[2]: C

以上、C#, Visual Basic(VB)で引数を取得するサンプルコードの紹介でした。



トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2019-12-14 (土) 16:48:17