Windowsバッチファイルで楽をする:gosub(サブルーチン)をバッチで使うには?

Windows
記事内に広告が含まれています。
スポンサーリンク

今回の記事では、システム運用でバッチファイルを活用したい初心者の皆さんに向けて、基本的なバッチファイルの作成方法とcallコマンドとラベルを使ったサブルーチンの方法について説明します。

スポンサーリンク

バッチファイルとは?

バッチファイルは、Windows環境で複数のコマンドを一括して実行するためのテキストファイルです。
拡張子は .bat または .cmd です。バッチファイルを利用することで、手動で行う作業を自動化し、効率化することができます。

バッチファイルの基本構造

まずは、簡単なバッチファイルの基本構造を見てみましょう。

@echo off
echo Hello, World!
pause
  • @echo off: コマンドを実行する際にコマンド自体を表示しないようにする。
  • echo Hello, World!: 画面に「Hello, World!」と表示する。
  • pause: プログラムの実行を一時停止し、キー入力を待つ。

サブルーチンの活用

プログラミングをしている方なら、「gosub」とかでおなじみのサブルーチンですが、
バッチファイルでもサブルーチン(Subroutine)を定義することができます。

サブルーチンを使うことで、コードの再利用性を高め、読みやすく保守しやすいスクリプトを書くことができます。

サブルーチンの定義と呼び出し

バッチファイルでは call コマンドを使ってサブルーチンを呼び出します。
サブルーチンの定義はラベル(:label)を使います。

@echo off
call :subroutine
echo Back to main
pause
goto :eof

:subroutine
echo Inside subroutine
exit /b
  • call :subroutine: サブルーチン :subroutine を呼び出す。
  • goto :eof: End Of File の略で、スクリプトの終了または次のラベルへジャンプする。
  • exit /b: サブルーチンを終了します。

引数の使用

サブルーチンや他のバッチファイルを呼び出す際に引数を渡すことができます。
引数を使うことで、呼び出し先で異なる動作をさせることができます。

引数の渡し方

@echo off
call :subroutine Arg1 Arg2
pause
goto :eof

:subroutine
echo %1
echo %2
exit /b
  • call :subroutine Arg1 Arg2: :subroutineArg1Arg2 の引数を渡す。
  • %1, %2: それぞれの引数を参照するためのプレースホルダー。

実用的なシステム運用バッチファイルの例

ここでは、サブルーチンと引数を使った実用的なシステム運用バッチファイルの例を紹介します。この例では、複数のディレクトリのバックアップを自動化します。

バッチファイルの内容

@echo off
set backupDir=C:\Backup
call :backupFolder "C:\Data1" "Data1_Backup"
call :backupFolder "C:\Data2" "Data2_Backup"
call :backupFolder "C:\Data3" "Data3_Backup"
echo Backup completed!
pause
goto :eof

:backupFolder
set sourceDir=%1
set targetDir=%backupDir%\%2
echo Backing up %sourceDir% to %targetDir%
xcopy %sourceDir% %targetDir% /E /I /Y
exit /b

バッチファイルの説明

ブロックごとに区切って説明していきます。

バックアップ先ディレクトリの設定:

set backupDir=C:\Backup

変数 backupDir にバックアップ先のディレクトリを設定します。

各ディレクトリのバックアップ:

call :backupFolder "C:\Data1" "Data1_Backup"
call :backupFolder "C:\Data2" "Data2_Backup"
call :backupFolder "C:\Data3" "Data3_Backup"

各ディレクトリをバックアップするために、サブルーチン :backupFolder を呼び出し、引数としてソースディレクトリとバックアップディレクトリ名を渡します。

サブルーチン :backupFolder の定義:

:backupFolder
set sourceDir=%1
set targetDir=%backupDir%\%2
echo Backing up %sourceDir% to %targetDir%
xcopy %sourceDir% %targetDir% /E /I /Y
exit /b

set sourceDir=%1: 第1引数をソースディレクトリとして設定します。
set targetDir=%backupDir%\%2: 第2引数を使ってバックアップ先ディレクトリを設定します。
echo Backing up %sourceDir% to %targetDir%: バックアップの開始を表示します。
xcopy %sourceDir% %targetDir% /E /I /Y: ファイルとディレクトリをバックアップします。/E は空のディレクトリもコピー、/I はターゲットがディレクトリであると仮定、/Y は上書き確認をしないオプションです。

まとめ

バッチファイルは、システム運用において非常に強力なツールです。
基本的なコマンドからサブルーチン、引数の使用方法までを理解することで、複雑なタスクも自動化できます。
今回紹介した基本的な技術を元に、ぜひ自身の環境で試してみてください。

このブログ記事が皆さんのバッチファイル作成に役立つことを願っています!
質問やコメントがあればお気軽にどうぞ。

免責規定

この記事で提供される情報は、一般的なガイダンスを目的としており、すべての環境やシステムでの動作を保証するものではありません。
OSのバージョンやリリースによっては、記載されているコマンドが実行できない、または異なる結果をもたらす可能性があります。
また、会社内のパソコンなどでは、ポリシーや権限によって実行できない場合があります。
実行には管理者権限が必要な場合が多いため、注意が必要です。
この記事の情報を使用することによって生じる問題や結果について、筆者およびサイト管理者は責任を負いません。
すべての操作は自己責任で行ってください。

最後までお読みいただきありがとうございました。
またお会いしましょう!

コメント

タイトルとURLをコピーしました