引数を使ってプログラムをより汎用的にしよう【初級編 第4回】

プログラムはできるだけ汎用性を持たせて作ろう

良いプログラムとは何でしょうか?私はその一つの条件に、

汎用性が高い
 

ということが挙げられると思います。”汎用性が高い”とは、何か一つのことに対して使えるのではなく、色々なことに対して使えるということです。

具体的にプログラムを使って説明していきましょう。以下のプログラムコードをご覧ください。

ここまで講義を進めてきた方には、このプログラムがどのような動作をするかお分かりでしょう。「ファイル.txt」というファイルを「コピーファイル.txt」というファイルにコピーするコマンドです。

では、「ファイル.txt」ではなく「サンプル.txt」ファイルを「コピーサンプル.txt」ファイルへコピーしたい場合にはこのコードをどのように編集したらよいでしょうか?それは「ファイル」の部分を「サンプル」に変えればよいでしょう。

これで希望通りの操作ができるプログラムが完成しました。

しかし、コピー対象とするファイルが変わるたびに、いちいちプログラム内容を開いて編集するのは面倒ですね。プログラムを変更せずにどんなファイルに対しても使えるようになればグンと操作が楽になります。これが、プログラムの汎用性を上げるということです。

 

本章の目標
引数を使えるようになり、汎用性の高いプログラムを書けるようになる

 

引数とは

まずは、”引数(ひきすう)”について説明していきましょう。引数とは”引き渡す数”という意味です。”数”とありますが、”文字”も引き渡すことができます。何に引き渡すのかというと、コマンドに引き渡すのです。実はここまで読み進めた読者の方は既に引数を使用しています。例えば、上記で示した、

というプログラムコードは「copy」コマンドに「サンプル.txt」と「コピーサンプル.txt」という引数を渡しています。「copy」コマンドは「サンプル.txt」と「コピーサンプル.txt」という引数を渡されそれに対して処理を行うのです。

このように引数はコマンドの右側にスペースを挟んで書きます。そして、よりコマンドに近い(より左側の)方の引数から第1引数、第2引数、…と呼びます。ここでは、「サンプル.txt」が第1引数、「コピーサンプル.txt」が第2引数ということになります。

「copy」コマンドは第1引数に指定されたファイルを第2引数に指定されたファイルにコピーするような役割を持っているのです。

引数について理解出来たところで、次は自分で引数を使えるようになりましょう。

 

自作のプログラム内で引数を使用できるようになろう

では、自分でこの引数を使用するにはどうしたらよいでしょうか?例えば、以下のコードを「引数の受け取り.bat」ファイルに書き込んでください。

これを実行するときは、「引数の受け取り.bat」をコマンドプロンプトに書き込み、エンターを押すことで実行しますね。

すると、プログラムが実行され「echo」コマンドの右側に書かれた文字(これも「echo」コマンドの引数である)が表示されます(「echo」コマンドは第1回講義の時に一度登場していますよ)。

ここで、コマンドプロンプトに入力した「引数の受け取り.bat」もまたコマンドという風に受け取ることができます。ということはこの「引数の受け取り.bat」に引数を受け渡してやり、プログラムの中で使用することができないでしょうか。できるのです。

百聞は一見に如かずということで、上記のプログラムを実際に引数を使ったプログラムに改良していきましょう。「引数の受け取り.bat」を以下のように変更します。

始めて登場する%1というのがありますね。これが引数を受け取る”プレースホルダー”と呼ばれるものです。では、実行してみましょう。これまでの実行とは少し違います。以下のようにコマンドプロンプトに入力してください。

引数の受け取り.bat パソコン自動化
 

「引数の受け取り.bat」の後に、スペースを挟んで「パソコン自動化」という引数を指定します。

すると、「%1」の部分が「パソコン自動化」となって出力されています。これは「%1」というのが引数を受け取って実行されたからです。

今回は第1引数だけでしてたが、第2、第3…第9引数を指定した場合は、それを%2、%3…%9で受け取ることができます。

 

引数を使って、「ファイルのコピー.bat」をどんなファイルにも対応できる汎用性の高いプログラムに改良してみましょう。ファイル名を自由に変更できるようにしたいため、ファイル名を引数として、プログラムの実行時に受け取ることにします。実行時のコマンドは、

ファイルのコピー.bat ファイル
 

のような感じです。これは「ファイル.txt」を対象としたプログラムですが、「サンプル.txt」を対象としたい場合は、

ファイルのコピー.bat サンプル
 

とすればよいでしょう。

次に、プログラムの中身です。「任意ファイルのコピー.bat」というファイルを作り、以下のコードを書き込みましょう。

%1にはプログラム実行時に指定する引数の文字が入ります。つまり、引数に「ファイル」という文字が指定されれば、

として実行されますし、「サンプル」という文字が指定されれば、

として実行されます。実際に、プログラムと同じフォルダに「ファイル.txt」と「サンプル.txt」を作成し、実行してみましょう。

まずは、「ファイル.txt」に関してです。

次に「サンプル.txt」について実行したい場合は、

とすればよいです。コピーしたいファイルが変わっても、プログラムを修正する必要が無かったことに注目してください。これが引数を使用する最大メリットです。

これで引数についての説明は終わりです。あとは使っていく中で自然と慣れてきますよ。

 

「@echo off」を付けて表示をスッキリ【コラム】

ここまでの内容とは全く違いますが、最後に「@echo off」コマンドについて紹介しておきます。これはプログラムの動作を変更するようなものではないので、ものすごく重要というわけではないのでが、自作のプログラムには必ず使用すると言ってもいいぐらいよく使うコマンドです。

上記で実行したコマンドの出力をもう一度確認してみましょう。以下は「任意ファイルのコピー.bat」に引数「サンプル」を付けて実行した結果です。

赤い下線部はプログラム内に書かれてあるコマンドが表示されています(「%1」は「サンプル」に置き換わっていますが)。このようにデフォルトの状態では、いちいちプログラム内に記述したコマンドがコマンドプロンプトに表示されることになります。

しかし、大抵の場合この表示は不要です。この表示があるとコマンドプロンプト上がごちゃごちゃと見づらくなってしまいます。

そこで、プログラムの先頭に「@echo off」を付けます。

もう一度、編集後のプログラムを同様に実行してみましょう。

どうですか?前回と見比べてみるとスッキリしたと思います。このように「@echo off」を付けると、プログラム内に書かれてあるコマンドをコマンドプロンプト上に表示しなくできるのです。

前にも言った通りこの「@echo off」は自作のプログラムには必ずつけると言っていいほど使用頻度が高いものです。今後紹介するプログラムにも基本的にはこの「@echo off」を付けた状態で紹介していきます。

 

おわりに

今回は引数について学習しました。

  • “引数”はプログラム実行時にプログラムの右側に並べて書くこと
  • 引数はスペースを挟んで複数個書くことができること
  • 引数をプログラム内で受け取るにはプレースホルダー「%1,%2,…」を使用すること

を覚えておきましょう。

 

次回は、いよいよ初級編の最後です。「ワイルドカード」というものを紹介しましょう。これもプログラムの基本であり引数に負けず劣らず重要なものです。これを使用することにより、一つのコマンドで複数のファイルやフォルダを一気に扱えるようになる非常に便利な機能です。

では、次回もよろしくお願いいたします。

 

<<【初級編 第3回】フォルダの基本操作とオプションについて

【初級編 第5回】ワイルドカードを使って複数のファイルやフォルダを一気に処理しよう>>

自動化プログラムの作成を依頼しませんか?

普段の面倒な単純作業を自動化しませんか?

幣サイトでは、Windowsパソコンの自動化プログラムの作成サービスを行っています。

本サービスの特徴は、

・安価な値段
・個人から法人までどなたでも対応
・お客様の要望を全力で実現

です。

安いからといって、決して手は抜きません。

まずは、下のボタンからWindowsパソコンの自動化プログラムの作成サービスの詳細をご確認ください。

    コメントを残す

    メールアドレスが公開されることはありません。

    日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)