バッチファイルとは
拡張子が「.bat」となっているファイルのこと。
コマンドプロンプトで実行できるコマンドをバッチファイルにまとめることで
バッチファイルを1クリックするだけでコマンドをまとめて実行することができます。
どういうときに使うか
決まった作業を毎回やるような場面で作業効率を良くするのに活躍します。
私はGitの処理を自動化するのに役立てています。
バッチファイルの作成方法
@echo off
echo ■■■■■■■■■■■■■
echo Hello World
echo ■■■■■■■■■■■■■
echo.
echo.本日は%year%%month%%date% です
echo.
pause
※文字コードはANSIもしくはShift-JISにしないと文字化けします
文字コードは「ファイル」→「名前を付けて保存」のエンコードで変更できます
3. 作成したバッチを実行する
作成したバッチをクリックすると、先ほど書いたコマンドが実行されます
良く使うコマンド例
基本コマンド
コマンド例
@echo off
rem @echo off にすると入力したコマンドが表示されなくなります
rem ←コメントアウトするときに使います
rem echoのあとに書かれたものが表示されます
echo この部分だけ表示されます
rem pauseは処理を中断し、何かのキーが入力されると処理が次に進みます
pause
rem pause以降は処理がないのでキーが入力されるとバッチが終了します
ファイルの読み書き
ファイル書き込みのコマンド例
@echo off
rem setで変数を設定できます
rem ここではstr1にHello、str2にWorldを設定
set str1=Hello
set str2=World
rem ファイル出力先を設定
set out=C:\bat\testbat.txt
rem %変数%で変数に設定したものを出力することができます
rem echo 〇〇>ファイル名で〇〇をファイルに書き込みしたものを新規で作成することができます
echo %str1%>%out%
rem echo 〇〇>>ファイル名で〇〇をファイルに追加で書き込み、なければ新規作成できます
echo %str2%>>%out%
echo %out%を作成しました
pause
ファイル読み込みの実行例
@echo off
rem ファイル読み込み先を設定
set input=C:\bat\testbat.txt
rem テキストファイルを1行ずつ読み込む
for /f "delims=" %%a in (%input%) do (
rem %%aには1行ずつ読み込んだ文字が設定されます
echo %%a
)
pause
ループ・条件分岐処理
ループ・条件分岐処理コマンド例
※ループ・条件分岐処理は通常だとバッチ処理内で変数を変更できないので、遅延環境変数展開を使って変更するよう注意が必要
@echo off
rem 変数はコマンドが実行されるタイミングで展開されるように変更
rem 変更しない場合はループ内での変数の変更が直ちに反映されない
setlocal enabledelayedexpansion
rem C:\bat配下に移動する
cd C:\bat
rem 変数numに数字0を設定
set /a num=0
rem C:\bat配下のファイル数だけ繰り返し処理を行う
for %%a in (*) do (
rem ファイル名を出力
echo %%a
rem numに1を追加
rem ここで変数は%変数%ではなく、遅延展開を用いた!変数!にする
set /a num=!num!+1
rem numの数字を出力
echo !num!
rem if 条件式 ()で条件に満たした処理が実行できます
if !num! lss 2 (
echo 現在ファイル数は2個より少ないです
) else (
rem elseは条件式を満たさない場合の処理を行います
echo 現在ファイル数は2個以上です
)
)
echo ファイル数は%num%個です
pause
応用例
- Git自動プル
@echo off
rem Gitのあるフォルダへ移動
cd C:\git\git-practice
rem gitプルコマンド実行
git pull origin main
pause
exit
実行時(管理者実行)
タスクスケジューラーで定期実行
windowsの標準機能の「タスクスケジューラ」を開く
操作のタスクの作成を選択し、名前を入力
※今回は管理者権限が必要なため、最上位の特権で実行するにチェック
あとはトリガーで設定したタイミングに自動でGitをプルしてくれるようになります
まとめ
このようにバッチではいろんなことが1クリックもしくは定期実行できるようになります。
今回紹介したことは基礎的な部分ですが、他にもいろんなコマンドが使用できますので
自分に合った使い方をして作業効率UPに繋げられればと思います。