PR

【バッチ】callコマンド:サブルーチンを3分でマスター

Command

サブルーチンは、繰り返し使用されるコードブロックを一箇所にまとめ、必要に応じて何度も呼び出すことを可能にする仕組み。

@echo off
CALL :StartProcess
CALL :CheckStatus
CALL :EndProcess
goto :eof

:StartProcess
echo プロセスを開始します...
exit /b

:CheckStatus
echo ステータスを確認中...
exit /b

:EndProcess
echo プロセスを終了します...
exit /b

何度も呼び出して利用できるプログラムの「部品」のようなもの。

参考 ABAPにおけるサブルーチン

サブルーチンを利用することで、①コードの再利用性が高まり、②読みやすさの向上、③保守のしやすさの向上が見込まれます。特に、複雑なスクリプトを扱う際には、サブルーチンを使うことで、効率的かつ効果的なコード管理が可能になります。

この記事では、バッチファイルにおけるサブルーチンの作成と呼び出しの基本から、より高度なテクニックまでをステップバイステップで解説します。IT初心者の方でも理解しやすいように、基本的な概念から始めて、徐々に具体的な応用例を解説します。

このページで学べる内容
  • サブルーチンとは?
  • サブルーチンの作成方法
  • サブルーチンの呼び出し方:callコマンド
  • 実践例

システムエンジニアやプログラマーであれば知らないと恥ずかしい超・基本知識です。是非最後までご覧ください。

スポンサーリンク

サブルーチンとは?

この章では、サブルーチンの基本的な概念とその使用法について解説します。

バッチファイルのプログラミングにおいて、サブルーチンはコードの再利用性と整理を助ける重要な要素です。

サブルーチンは、一連のコマンドまたは命令をカプセル化したコードブロック(=プログラムの部品)です。これにより、スクリプト内の異なる場所から同じコードブロックを再利用することが可能になります。

サブルーチンとは
図1:サブルーチン

サブルーチンは、コードの整理と読みやすさを向上させるのに役立ち、複雑なスクリプトをより管理しやすくします。

ポイント サブルーチンを利用するメリット

  • 再利用性
    • サブルーチンを使用することで、同じコードを何度も書く必要がなくなります。結果として効率的にプログラミングすることが可能になります。
  • メンテナンスの容易さ
    • コードの一部分を変更する必要がある場合、サブルーチン内での変更だけで済むため、全体的なメンテナンスが容易になります。
  • 可読性の向上
    • サブルーチンを使用することで、コードがより構造化され、他の人が理解しやすくなります。

サブルーチンの作成方法

バッチファイルにおけるサブルーチンは、ラベルを使用して定義。ラベルはコロン(:に続く名前で表され、その後に実行する一連のコマンドを記述します。

例えば、:MySubroutine は「MySubroutine」という名前のサブルーチンの開始を示します。

:MySubroutine
echo これはサブルーチンの例です

このラベルを使用して、サブルーチンの開始点を指定し、その後に実行したいコマンドを記述します。

サブルーチンの終了

サブルーチンの終わりは、exit /b コマンドを使用して明示的に指定します。これにより、サブルーチンの実行が終了し、呼び出し元のコードに制御が戻ります。

:MySubroutine
echo これはサブルーチンです
exit /b

このように、サブルーチン内のコマンドを実行した後に exit /b コマンドを使用することで、サブルーチンからの適切な「出口」を確保します。

サブルーチンの呼び出し方

作成したサブルーチンを実際に使用するためには、callコマンドを用います。

このセクションでは、バッチファイル内でサブルーチンを呼び出す方法について詳しく解説します。

CALL コマンドによる呼び出し

CALL コマンドは、指定されたラベルに制御を移し、サブルーチンの実行を開始します。サブルーチンの実行が完了すると、呼び出し元のスクリプトの次の行から実行が続けられます。

CALL :MySubroutine
echo サブルーチンの実行後に表示されます

:MySubroutine
echo これはサブルーチンです
exit /b


:: 出力結果
:: これはサブルーチンです
:: サブルーチンの実行後に表示されます

この例では、:MySubroutine ラベルに付けられたサブルーチンが CALL コマンドによって呼び出され、その後に続くコマンドがサブルーチンの実行後に実行されます。

引数の渡し方

サブルーチンには引数を渡すことも可能です。これにより、サブルーチンの動作を動的に変更することができます。引数は CALL コマンドの後に指定し、サブルーチン内では %1, %2 などの特殊変数を使用してアクセスします。

CALL :MySubroutine 引数1 引数2

:MySubroutine
echo 引数1: %1
echo 引数2: %2
exit /b

:: 出力結果
:: 引数1: 引数1
:: 引数2: 引数2
サブルーチンと関数の違い

サブルーチンと関数はほぼ同じものだと考えてOKですが、完全に同一の概念ではありません。それぞれの違いを以下に簡潔に説明します。

  1. サブルーチン
    • サブルーチンは、特定のタスクを実行するコードのブロック。
    • バッチファイルや古いプログラミング言語でよく利用されるイメージ。
    • サブルーチンは通常、値を返さず、プログラム内の特定の処理を単に実行することに焦点を当てている。
  2. 関数
    • 関数もサブルーチンと同様に、特定のタスクを実行するコードのブロック。
    • そのうえで、関数は通常、処理の結果として値を返しますものを指す場合が多い。この「戻り値」は、関数が呼び出された場所で利用できます。
    • 現代のプログラミング言語では、関数はデータを操作し、結果を返すことが一般的です。
サブルーチンと関数

サブルーチン:callコマンドのサンプルコード

ここまででサブルーチンの基本を理解できたと思いますので、ここからは実際の応用例を通じてその使い方を深めていきましょう。バッチファイル内でサブルーチンを活用するいくつかの具体的な例を紹介します。

例1: ファイル操作の自動化

サブルーチンは、ファイル操作などの反復的なタスクを自動化するのに特に有用です。例えば、特定のディレクトリ内のファイルをバックアップするサブルーチンを考えてみましょう。

@echo off
CALL :BackupFiles "C:\MyDocuments"
CALL :BackupFiles "D:\OtherDocuments"
goto :eof

:BackupFiles
xcopy %1 "E:\Backup\%~nx1" /E /I
echo %1 のバックアップが完了しました。
exit /b
  • :BackupFiles サブルーチンは、指定されたディレクトリ(例えば "C:\MyDocuments")の内容を "E:\Backup\MyDocuments" にコピーする部品。
  • スクリプトは、"D:\OtherDocuments" ディレクトリに対しても同じ操作を行います。
  • 各操作の終了後には、echo コマンドにより「バックアップが完了しました」というメッセージが表示されます。

例2: ユーザー入力に基づくアクション

ユーザーからの入力に基づいて、異なるサブルーチンを実行する例です。

@echo off
set /p UserInput=操作を選択してください(1: ファイル表示, 2: 現在時刻表示): 
if %UserInput%==1 CALL :ShowFiles
if %UserInput%==2 CALL :ShowTime
goto :eof

:ShowFiles
dir
exit /b

:ShowTime
time /T
exit /b

参考 setコマンド / ifコマンド

  • ユーザーが 1 を入力すると、:ShowFiles サブルーチンが呼び出され、ディレクトリの内容が表示されます。
  • 2 を入力すると、:ShowTime サブルーチンが呼び出され、現在の時刻が表示されます。

例3: 複数のサブルーチンを組み合わせる

複数のサブルーチンを組み合わせて、より複雑なタスクを実行する例です。

@echo off
CALL :StartProcess
CALL :CheckStatus
CALL :EndProcess
goto :eof

:StartProcess
echo プロセスを開始します...
exit /b

:CheckStatus
echo ステータスを確認中...
exit /b

:EndProcess
echo プロセスを終了します...
exit /b
  • このスクリプトでは、:StartProcess, :CheckStatus, :EndProcess の3つのサブルーチンを順番に呼び出します。
  • 各サブルーチンは特定のメッセージ(例:「プロセスを開始します...」)を表示し、プロセスの流れを示します。

まとめ この記事の要約

ポイント1 サブルーチンとは?

  • サブルーチンは、繰り返し使用される一連のコマンドを一箇所にまとめたコードブロックです。
  • 再利用性とコードの整理に役立ち、複数の場所から同じコードを呼び出すことができます。
:MySubroutine
echo これはサブルーチンです。
exit /b

CALL コマンドとは?

  • CALL コマンドは、バッチファイル内で定義されたサブルーチンを呼び出すために使用されます。
  • サブルーチンの実行後、制御は CALL コマンドの次の行に戻ります。
CALL :MySubroutine
echo サブルーチンの後に実行されるコマンド。

使い方は?

  • サブルーチンは、ラベル(:に続く名前)で定義し、CALL コマンドで呼び出します。
  • 引数を渡してサブルーチンの動作を変えることも可能です。
CALL :MySubroutine 引数1 引数2
:MySubroutine
echo 引数1: %1
echo 引数2: %2
exit /b

このWebサイトは現役のエンジニアが以下3点を目的として運営しています。

  1. 勉強:一度理解した内容を忘れないように。
    → アウトプットは「最強のインプット」である! 
  2. 備忘:忘れたとしても後から見返せるように。
    → 未来の自分への「お手紙」を書いています。 
  3. 共有:〇〇ってこうだったんだ!の感動をシェアできるように。
    → あなたの知識は誰かにとっての「価値ある情報」です。 

副業ブログの始め方はこちらから

スポンサーリンク
CommandIT-Skills
シェアする
ビズドットオンラインをフォローする
タイトルとURLをコピーしました