どうも!リョクちゃです。
今回は、前回の記事につづきバッチファイルをVB.Netから呼び出す過程で、
バッチファイルに引数を渡す方法について紹介します。
前回の記事はこちら
目次
バッチファイルに引数を渡して呼び出し実行
ProcessStartInfoクラスの設定
引数を渡すには、まずProcessStartInfoクラスのインスタンス化を行い
オブジェクトを生成します。
例) 変数testInfoをProcessStartInfoクラスで宣言
Dim testInfo As New ProcessStartInfo()
引数を渡す設定
ProcessStartInfoクラスのArgumentsプロパティを使って引数を渡す設定をします。
例) バッチファイルに引数として”Tom”を渡したい場合
testInfo.Arguments = “Tom”
とすることで、引数を渡す設定ができます。
複数の引数を渡したい場合は、半角スペースで引数として渡す値を区切ることで
複数の引数を渡せます。
例) バッチファイルに引数として”ベーコン”と”リンゴ”を渡したい場合
testInfo.Arguments = “ベーコン リンゴ”
バッチファイルを呼び出す
今回呼び出すバッチには、こちらの記事で作成したバッチを使用します。
→ TestArgBat.bat
実行するファイルを設定します。
testInfo.FileName = “C:\TestArgBat.bat”
最後に上記で設定したtestInfoをProcess.Start()に渡してあげることで、
呼び出したいバッチファイルに引数を渡して実行することができます。
実例
こちらの記事で作成したフォームを流用します。
ボタンが押されたらバッチファイルを実行できるようにします。
まずは、引数を渡さないでバッチファイルを呼び出してみます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
Public Class frmBat ''' <summary> ''' ボタンが押されたら ''' </summary> ''' <param name="sender"></param> ''' <param name="e"></param> Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim testInfo As ProcessStartInfo = New ProcessStartInfo() testInfo.FileName = "C:\Users\ryoku\Desktop\StudyBat\TestArgBat.bat" System.Diagnostics.Process.Start(testInfo) End Sub End Class |
これを実行すると、
ボタンが押されたらバッチが起動し、上図のような状態になります。
では、引数を渡して実行してみます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
Public Class frmBat ''' <summary> ''' ボタンが押されたら ''' </summary> ''' <param name="sender"></param> ''' <param name="e"></param> Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim testInfo As ProcessStartInfo = New ProcessStartInfo() testInfo.FileName = "C:\Users\ryoku\Desktop\StudyBat\TestArgBat.bat" testInfo.Arguments = "ベーコン リンゴ" System.Diagnostics.Process.Start(testInfo) End Sub End Class |
実行すると、
引数として設定した項目が、それぞれ表示されていることがわかります。
外部ファイルに引数を渡せることができれば、
何らかの処理途中に外部ファイルの呼び出しを行い
処理の肩代わりもさせられたりできるので使い道はありそうです。
まとめ
VB.Netから外部ファイルとしてバッチファイルに引数を渡して呼び出す方法を紹介しました。
実際に、VB.Netでできない処理を外部ファイル上でさせたいときに、
どうしても引数を渡す必要があったので今回活用してみました。
参考になれば嬉しいです。
最後までお読みいただきありがとうございます。
・こちらの書籍を参考にVB.Net勉強しています。