BATスクリプトの基礎メモ

WindowsのBATスクリプトのメモ。毎回忘れるので。

BATスクリプト テンプレート

@echo off
SETLOCAL
REM ============================
REM ファイル名:
REM 名称      :
REM 概要      :
REM 引数      :
REM 終了コード:
REM ============================

REM ============================
REM 設定内容
REM ============================
SET PARAM1=%1
SET /P INPUT1=値を入力してください>>>

ENDLOCAL

分岐

IF 条件文 (
  処理
) ELSE IF (
  処理
) ELSE (
  処理
)
条件文
%変数名% == "文字列"
NOT %変数名% == "文字列"
DEFINED 変数名
EXIST ファイルパス
ERRORLEVEL 番号

ループ

FOR(カウントアップ)
FOR /L %%I IN (初期値, 増分, 終了値) DO (
  %%I を参照できる処理
)
FOR-EACH
FOR %%I IN (a b c) DO (
  %%I を参照できる処理
)

※なお、ループ内で変数の値を変更したい場合は、遅延環境変数を有効化する必要がある。

終了コード変換

REM 任意のコマンドを実行し、その終了コードが0でなかった場合に終了コードを指定して終了
任意のコマンド
IF NOT ERRORLEVEL 0 (
  echo エラーメッセージ
  exit /B 終了コード
)

文字列操作

部分文字列取得
%対象変数:~開始インデックス,文字数%

※文字数を省略した場合は、開始インデックス以降全て
※開始インデックスがマイナスの場合は、後ろから数えたインデックス
※文字数がマイナスの場合は、後ろからその文字数分省く

文字列置換
%対象変数:置換対象部分文字列=置換文字列%
部分文字列 正規表現存在チェック ※FOR等の中では使えない
echo %変数% | findstr 検索文字列
IF NOT ERRORLEVEL 1 (
  存在する場合の処理
)