VB.NET でコンソールアプリケーション
(Visual Studio 2015 版)

投稿日 2015/08/29

[Home] 

はじめに

最近の新人は、Windows などの GUI で育ってきたのでコマンドプロンプトやコンソールアプリケーションを知りませんね。もちろん、情報系の学科を出た人は普通、知ってますが、文系や理系でも情報系とは無縁の学科出身だと知らないことが多いです。

そこで超初心者向きのページを作ってみました。言語は、VB.NET を使っていますが、C# でもだいたい同じなので一部を読み替えてください。


コマンドプロンプトとは

「コマンドプロンプト」は昔の MS-DOS (1990年代前半ごろまで使用されていた) の画面を Windows に移植したもので、「コマンド」と呼ばれる文字列をキーボードから打ち込んで操作します。基本的にマウスは使用しません。よく使われるコマンドを下に列挙します。

コマンドプロンプトは、Windows 7 ではスタートメニューの「アクセサリ」の中に入っています。また、Visual Studio 2015 がインストールしてあれば、「Visual Studio 2015 / Visual Studio Tools」フォルダ内の「開発者用コマンドプロンプト」を使ったほうが便利です。下の画像は開発者用コマンドプロンプトの表示例です。カラー設定を変更してあるので、バックの色が黒ではなくなってますが、デフォルトではバックの色は黒になります。


コンソールアプリケーションとは

コンソールアプリケーションはコマンドプロンプトで実行できるアプリケーションです。コンソールアプリケーションを実行するには、コマンドプロンプトを開き、コマンドとしてコンソールアプリケーションを実行します。コマンド名は、VB.NET で言えば、通常、プロジェクト名と同じになります。


コマンドライン引数

コマンドプロンプトでコマンドを実行する場合、「コマンドライン引数」というパラメータをコマンドに与えることができます。例えば、dir コマンド (ディレクトリ内容一覧を表示するコマンド) では、表示するディレクトリをコマンドライン引数として指定します。

(例) dir \temp

コマンドライン引数を2つ以上使用する場合は、空白で区切ります。

(例) dir /w \temp

コマンドの終了コード

コマンドが終了するとき、「終了コード」を返すことができます。これは整数値でコマンドごとに意味が異なります。通常、0 は「正常終了」、それ以外はエラーがあった場合で、そのエラーコードなどを返してきます。コマンドプロンプトでは終了コードは %ERRORLEVEL% に格納されます。直前に実行したコマンドの終了コードは、下のようにして確認できます。

(例) echo %ERRORLEVEL%

VB.NET コンソールアプリケーションの作り方

Visual Studio 2015 を起動し、次のようにしてコンソールアプリケーション・プロジェクトを作成します。

  1. 「ファイル→プロジェクト」メニューを実行して、「新しいプロジェクト」ダイアログを開く。
  2. 「新しいプロジェクト」ダイアログでテンプレートの中から、Windows / Visual Basic を見つけ、テンプレート一覧で「コンソールアプリケーション」を選択する。
  3. 名前テキストボックスにプロジェクト名を入力(変更)する。これが実行ファイル名にもなる。
  4. 必要ならソリューション名テキストボックスの内容を変更する。
  5. OK ボタンをクリックすると、コンソールアプリケーション・プロジェクトが作成される。

コンソールアプリケーションの構造

コンソールアプリケーションの構造は非常に単純です。プロジェクトを作成すると、Module1.vb というファイルが入っていますが、その内容は下記のようになっています。

Module Module1

    Sub Main()
    
    End Sub
    
End Module

これを実行すると、Main() がコールされ、終了するとコンソールアプリケーションも終了します。コンソソールアプリケーションを実行したとき、最初に実行されるメソッドは、常に Main です。

このコードでは、処理が何も入ってないので、コマンドプロンプトが開き、一瞬のうちに閉じてしまいます。


コンソールアプリケーションで文字列を表示するには

コンソールアプリケーションで文字列を表示するには、System.Console クラスの Write() メソッドや WriteLine() メソッドを使います。Write() メソッドは文字列を表示するだけで、改行を追加してくれませんが、WriteLine() メソッドは文字列の後に改行を追加して表示するので、こちらを使う機会の方が多いです。

例えば、"Hello, World!" と表示するには、次のようにします。

Module Module1

    Sub Main()
        Console.WriteLine("Hello, World!")
    End Sub
    
End Module

これを Visual Studio で実行すると、一瞬のうちにウィンドウが閉じてしまい確認できません。そこで、次のように Console.ReadKey() メソッドを追加すると、何かキーを押すまでウィンドウが開いたままになります。

Module Module1

    Sub Main()
        Console.WriteLine("Hello, World!")
        Console.ReadKey()
    End Sub
    
End Module

これだと、Visual Studio で実行するにはいいのですが、コマンドプロンプトで実行するときも、何かキーを押してやらないと終了しないので不便です。そこで、デバッグ時だけ Console.ReadKey() を実行するように、#If ディレクティブを追加します。

Module Module1

    Sub Main()
        Console.WriteLine("Hello, World!")
#If DEBUG Then
        Console.ReadKey()
#End If
    End Sub
    
End Module

コマンドライン引数を取得するには

コマンドライン引数を取得するには、Main() メソッドを変更してパラメータ args を追加します。このパラメータ args は文字列の配列で長さは、コマンドライン引数の数と同じです。つまり、コマンドライン引数がこの配列に格納されています。

例えば、次のようなコマンド "test1" を実行した場合、

test1 a bc def

args の要素は次のようになります。

args(0)="a", args(1)="bc", args(2)="def"
Module Module1

    Sub Main(ByVal args As String())
        ' コマンドライン引数一覧を表示する。
        For i As Integer = 0 To args.Length - 1
             Console.WriteLine(args(i))
        Next
#If DEBUG Then
        Console.ReadKey()
#End If
    End Sub
    
End Module

終了コードを返すには

コンソールアプリケーションが終了コードを返すには、Main() を Sub でなく Function に変更して、Return 文で終了コードを返します。下のサンプルはコマンドライン引数がなければ終了コード 1 を返し、ある場合は、それらをすべて表示して終了コード 0 を返します。

Module Module1

    Function Main(ByVal args As String()) As Integer
        ' コマンドライン引数がない場合は終了コード 1 を返す。
        If args.Length = 0 Then
            Return 1
        End If
        
        ' コマンドライン引数がある場合は、その一覧を表示して終了コード 0 を返す。
        For i As Integer = 0 To args.Length - 1
            Console.WriteLine(args(i))
        Next
        Return 0
    End Function
    
End Module

下の画像は、このサンプルをコンパイルし、コマンドプロンプト内で実行したときの例です。


リリースビルドしてコンソールアプリケーションを配置するには

コンソールアプリケーションが完成すると、その実行ファイル(通常、ファイル名はプロジェクト名.exe) をパスの通ったフォルダへコピーしてコマンドプロンプトから実行できるようにします。もし、そのようなフォルダがない場合(あるいはわからない場合)は、C:\bin というフォルダを作成してください。以下ではパスの通ったフォルダを C:\bin のこととして説明します。

そのためにまず「リリースビルド」を行います。リリースビルドは Visual Studio の「ビルド」メニューの下あたりにあるドロップダウンを "Release" に変更します。

次に「ビルド→ソリューションのビルド」メニューを実行します。これにより、プロジェクトのフォルダの下に bin\Release フォルダが作られるので、その中からプロジェクト名.exeというファイルを C:\bin へコピーします。プロジェクトのフォルダの場所は、ソリューションエクスプローラでプロジェクトを選択して、コンテキストメニューを開き「エクスプローラーでフォルダを開く」メニューを実行すると、プロジェクトフォルダが開きます。

bin\Release からプロジェクト名.exe (デフォルトでは ConsoleApplication1.exe) を C:\bin へコピーしたら、コマンドプロンプトを開いて実行してみます。プロジェクト名をデフォルトのままにしたときは、次のようになります。

C:\> ConsoleApplication1

正しく実行できたら OK ですが、「操作可能なプログラムまたはバッチ ファイルとして認識されていません。」などと表示されたら、パスが C:\bin に通ってないのでもう一度、次の「C:\bin へのパスの通し方」を見ながら確認します。


C:\bin へのパスの通し方

 

 


 

 開設 2014年12月   著作権 2014-2015 bonk.red  連絡先: こちらからメッセージを送ってください。

 このページの先頭へ..