【C#】C#からバッチファイルを実行するには

この記事では、C#からバッチファイルを実行する方法についてご説明します。

【動画】C#からバッチファイルを実行する実際の動き

本題に入る前に、まずは次の動画をご覧ください。


Process.Start メソッドを使って指定したバッチファイルを実行しています。

コードの流れ

STEP.1
Process.Start メソッドを使って指定したバッチファイルを実行する
Process.Start メソッドを使って指定したバッチファイルを実行します。

バッチファイルの例

今回呼び出すバッチファイルは以下の通りです。

このバッチファイルのコードは以下の通りです。

@echo off

rem コピー元のファイルの格納先のパス
set "frmPath=C:\work\10_勉強\21_C#\0041\from"

rem コピーするファイル名
set "fileName=test.txt"

rem コピー先のフォルダのパス
set "toPath=C:\work\10_勉強\21_C#\0041\to"

rem ファイルをコピーする
copy "%frmPath%\%fileName%" "%toPath%"

以上のコードは、「C:\work\10_勉強\21_C#\0041\from」配下にある「test.txt」を、「C:\work\10_勉強\21_C#\0041\to」配下にコピーする処理です。

「C:\work\10_勉強\21_C#\0041\from」配下にある「test.txt」は下のとおりです。

この「test.txt」のファイルを「C:\work\10_勉強\21_C#\0041\to」配下にコピーします。

コピーした結果は下のとおりです。

以上で、C#からバッチファイルが呼び出され、バッチファイルの処理が正常に実行されたことが確認できました。

C#のコード(例)

App.configのコード

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
    </startup>

    <appSettings>

        <!-- 実行したいバッチファイル名 -->
        <add key="batFile" value="C:\work\10_勉強\21_C#\0041\0041.bat" />
    </appSettings>
</configuration>

コードの説明

以上のコードは、バッチファイルのフルパスを「batFile」というキーに設定しているコードです。

この「batFile」のキーの値を、フォーム側のコードが参照して使います。

フォームのコード

using System;
using System.Windows.Forms;
using System.Diagnostics;
using System.Configuration;

namespace wfcs_0041
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            // App.configのappSettingsタグ内に記述した「batFile」のキーの値を取得して変数「batFile」に格納する
            string batFile = ConfigurationManager.AppSettings["batFile"];

            // ProcessStartInfoインスタンスを生成する
            ProcessStartInfo startInfo = new ProcessStartInfo();

            // 起動するプログラムを指定する(今回実行するのはバッチファイル)
            startInfo.FileName = batFile;

            // バッチファイルを実行する
            Process.Start(startInfo);
        }
    }
}

注目すべきコード①

最初に見て頂きたいのは18行目です。

            // App.configのappSettingsタグ内に記述した「batFile」のキーの値を取得して変数「batFile」に格納する
            string batFile = ConfigurationManager.AppSettings["batFile"];

コードの説明

以上のコードは、App.configのappSettingsタグ内に記述したキーの値を取得して変数に格納するコードです。

「batFile」のキーの値を変数「batFile」に格納します。

注目すべきコード②

次に見て頂きたいのは21行目から27行目です。

            // ProcessStartInfoインスタンスを生成する
            ProcessStartInfo startInfo = new ProcessStartInfo();

            // 起動するプログラムを指定する(今回実行するのはバッチファイル)
            startInfo.FileName = batFile;

            // バッチファイルを実行する
            Process.Start(startInfo);

コードの説明

以上のコードは、指定したバッチファイルを実行する処理のコードです。

コードの詳細

21行目のコードでProcessStartInfoインスタンスを生成し、24行目で実行するプログラムを指定します。

今回実行するのはバッチファイルなので、「注目すべきコード①」で取得したバッチファイルをFileNameプロパティに設定します。

以上でバッチファイルを実行する準備が整ったので、27行目のStartメソッドでバッチファイルを実行します。

動作確認

「バッチファイルの例」をご覧ください。

【注意】参照設定が必要です

一つ注意点があるのですが、先ほどのコードを動かすには参照設定が必要です。

「System.Configuration」の項目を追加しないと、「ConfigurationManager」が存在しないとのことでエラーになってしまいます。

本コードを実行する際は、「System.Configuration」の項目を追加しましょう。

最後に

この記事では、C#からバッチファイルを実行する方法についてご説明しました。

C#からバッチファイルを実行したいときは本記事を参考にしてみてくださいね。

プログラミングのスキルを習得するなら

プログラミングのスキルを習得したい、今のスキルをもっと高めたい、そう考えているなら「プログラミングスクール」がおすすめです。

プログラミングのスキルの基礎を身につけるなら「TechAcademy」で1週間の無料体験があるので、これで「プログラミングの基礎」を学ぶのにおすすめですよ。

→ TechAcademyの「1週間 無料体験」はこちら