バッチファイルの書き方をまとめる。
ファイルの拡張子
ファイルの拡張子は [.bat] 。
# sample.bat @echo off echo hello world ---- > hello world
コメント
コメントの書き方
rem [コメント]
// t.bat rem コメントは表示しない echo hello world ---- > hello world
変数
変数の設定
set 変数名=値
変数の取り出し
変数名を%で囲みます。
変数のクリア
set 変数名=
set a=10 echo %a% set b=hello world echo %b% set a= ---- > a > hello world
環境変数
環境変数の例。
環境変数 | 説明 |
---|---|
%~dp0 | カレントディレクトリ |
%USERPROFILE% | ユーザープロファイル |
%computername% | コンピューター名 |
%TEMP% | TEMP ディレクトリ |
引数
バッチファイルへの引数は %1,%2,%3 ~%9 を参照。%0 はコマンド名。
> sample.bat abc def
echo コマンド名 %0 echo 第1引数 %1 echo 第2引数 %2 -- > コマンド名 sample.bat > 第1引数 aa > 第2引数 bb
%~dp0 とは - [コマンドプロンプト・バッチ/Windows] ぺんたん info
制御
if 文
条件式
set name=sato if %name%==sato ( echo name match %name% ) else ( echo name not match %name% ) ---- > name match sato
ファイルの存在チェック
if exist sample.txt ( echo exist sample.txt ) else ( echo not exist sample.txt ) ---- > echo exist sample.txt
空チェック
変数をダブルコーテーションで囲む。
set name= if "%name%"=="" ( echo name is empty ) ---- > name is empty
数値チェック
set num=10 if %num% equ 10 ( echo num is 10 ) ---- > num is 10
for
指定範囲
for /l %%i in (0,1,3) do echo %%i ---- > 0 > 1 > 2 > 3
ファイル一覧
カレントディレクトリを検索
for %%f in (*.*) do ( echo %%f ) ---- ファイル一覧を表示
data フォルダ以下を検索
for %%f in (data/*.*) do ( echo %%f ) ---- ファイル一覧を表示
Windowsでファイルリストを取得するコマンド | 秋拓技術学院
/R を指定して再帰的に検索
for /R %%f in (*.*) do ( echo %%f << フルパス ) ---- ファイル一覧を表示
goto
ラベルに移動。
:start echo start goto :end echo skip rem スキップされる :end echo end ---- > start > end
遅延環境変数
if,for 文などに定義した変数の値を変更しても、定義した値から書き換わらない場合に対応するため遅延環境変数を使う。
setlocal enabledelayedexpansion << 遅延環境変数 set a=1 echo %a% if 1 == 1 ( set /a a+=1 echo !a! << !で参照する ) ---- > 1 > 2
呼び出し
外部バッチ
call sample2.bat
サブルーチン
call :funcA exit 0 << バッチを終了、コマンドプロンプトを終了 :funcA echo call funcA exit /b 0 << コマンドプロンプトを終了せず、呼び出し元に戻る