Windows バッチファイルの基本
はじめに
今回は、Officeの更新プログラムを閉域ネットワーク内のVDIに展開する方法を検討するにあたって、シャットダウンスクリプトにバッチファイルを当てるといいのではないかという案が出ました。そこでバッチファイルについて調べたものを備忘録的に記録しようと思います。
バッチファイルとは
バッチファイル(.bat)とは、Windowsで利用できるコマンドプロンプトを活用したテキストファイルです。バッチファイルにコマンドを記述することで、そのファイルに記述した内容に基づいてバッチ処理を実行することができます。指定されたバッチファイルが見つかると、コマンドプロンプトはその中のコマンドを1行ずつ実行し、ファイルの最後まで到達すると実行が終了します。
バッチファイルを使うことで、一連のコマンドを自動で実行することができます。
バッチファイルの作り方
メモ帳などのエディタで作成し、.bat
拡張子で保存するだけで作成することができます。
基本的な構文の例
1. @echo on/ off
コマンドの表示を切り替える
-
@echo on
:コマンドの表示をオフにし、以降のコマンドは画面表示しない。 -
@echo off
:コマンドの表示をオンにし、以降のコマンドが画面上に表示される。
2. set /p
ユーザに入力させる
# ユーザーに名前を入力させ、入力結果を表示
@echo off
set /p username=Enter your name:
echo Hello, %username%
pause
3. xcopy
コピーを実行する
# ファイルやフォルダをコピー
@echo off
xcopy <コピーしたいファイルやフォルダが格納されているフォルダのパス> <コピーしたものを格納するフォルダのパス> /E /H
echo Backup completed
pause
# オプション
# /D:03-07-2025 2025年3月7日以降に更新されたファイルをコピー
# /E サブディレクトリもコピーする
# /H 隠しファイルも含めてコピー
4. dir
フォルダ内のファイル一覧を取得する。
# フォルダ内のファイル一覧を取得
@echo off
dir C:\Users > filelist.txt
echo The file list was output to filelist.txt.
pause
5. if… else…
条件分岐によって処理をおこなう。
@echo off
set /p userinput=Enter a number (1 or 2): # ユーザーに1, 2いずれかの数値を入力させる
if "%userinput%"=="1" (
echo You entered 1 # 1を入力した場合、"You enter 1"を表示
) else (
echo You did not enter 1 # それ以外の場合、"You did not enter 1"を表示
)
pause
6. for
繰り返し処理をおこなう。
# カレントフォルダ内の.txtファイルを一覧表示
@echo off
for %%f in (*.txt) do echo %%f
pause
バッチファイルの便利な使い方(自動バックアップ)
バッチファイルをWindowsのタスクスケジューラーに設定し、バッチファイルを実行させることで、「毎日〇時」「毎月×日」などの定期的な作業を自動化することができます。これによって、日々のバックアップ作業を自動化し、手動での操作を減らすことでシステムの信頼性の確保や、運用容易性の向上が実現できます。
バッチファイルの業務上での使用例
バッチファイルの使用例
- 定期的なバックアップ
重要なファイルやフォルダをxcopy
などを用いて定期的にバックアップする - ログの整理
定期的なログアーカイブの削除等 - システムメンテナンス
システムの状態をチェックし、再起動やシャットダウンを実行
スクリプトの使用例
- データ処理の自動化
データの取得、処理、レポート作成など - システム設定の変更
複数のシステム設定の変更や、新しいソフトウェアのインストールなどの一括変更 - ユーザアカウント管理
ユーザアカウントの作成、削除、権限変更を自動化
最後に
今回は、Officeの更新プログラムを各VDI端末に展開する手法としてバッチファイルを利用する方法を調べましたが、それ以外にも様々な定型作業を自動化できるため、便利だと思いました。
また、自分の私用PCもWindows環境なので、シャットダウンスクリプトやタスクスケジューラーにバッチファイルを適用させて実際に想定している動作ができるか試してみたいと思います。
最後までお読みいただきありがとうございました。
Discussion