バッチファイルで使うコマンドは、コピーならcopy、条件分岐ならif、繰り返しならforというように、やりたいことから選ぶと覚えやすくなります。この記事では、目的別の一覧と短い実行例をまとめました。

例はWindowsのバッチファイル(.bat)向けです。作り方から知りたい方は、バッチファイルでできること・できないことと注意点も参考にしてください。

例を試すときは、練習用フォルダと不要なファイルを使いましょう。ファイルを削除する例は、対象を確認してから実行してください。オプションの意味はコマンドによって異なり、コマンド名の後ろに /? を付けるとヘルプを確認できます。

バッチファイルの基本コマンド一覧

やりたいことコマンド・書き方
メッセージ表示・一時停止echo、@echo off、pause、rem
アプリや別のBATを起動start、start /wait、call
処理を終了exit /b
ファイルのコピー・移動・削除copy、xcopy、robocopy、move、del
フォルダの作成・移動・確認mkdir、rmdir、cd、dir
条件分岐・繰り返しif、for
変数・実行場所を扱うset、%変数名%、%~dp0、path
フォルダ構成・ネットワークの確認tree、ping、ipconfig、taskkill

メッセージを表示する・処理を一時停止する

コマンド役割
echoメッセージを表示する
@echo off実行するコマンド自体の表示を抑える
pauseキー入力を待つ
remコメントを書く
@echo off
rem 処理開始メッセージ
echo 処理を開始します
pause
echoで開始メッセージを表示し、pauseでキー入力を待つ画面
「処理を開始します」と表示したあと、pauseで入力待ちになります。

日本語が文字化けする場合は、BATの保存文字コードとコマンドプロンプトのコードページが合っているか確認してください。まず英数字だけで動作を確認すると切り分けやすくなります。

アプリや別のバッチファイルを起動する

書き方用途
startアプリを起動して次の処理へ進む
start /wait起動したアプリの終了を待つ
call別のBATを呼び出し、終了後に呼び出し元へ戻る
exit /b現在のバッチ処理を終了する

アプリを起動する:start

Excelがインストールされ、excel.exeを呼び出せる環境なら、次のように起動できます。

start "" excel.exe
echo Excelを起動しました

startの最初の引用符付き引数はウィンドウのタイトルです。空のタイトルを指定しておけば、その後ろに引用符で囲んだ実行ファイルのパスを書けます。終了を待つ場合は /wait を付けます。

別のBATを呼び出す:call

同じフォルダにあるTest1.batを呼び出す例です。Test1.batは事前に用意してください。

call "%~dp0Test1.bat"
if errorlevel 1 exit /b 1
echo Test1.bat completed.
pause

呼び出されるBATもexit /bで終えれば、呼び出し元へ戻れます。exitだけではコマンドプロンプト自体が終了するため、BATだけを終了したいときは /b を付けましょう。

ファイルをコピー・移動・削除する

コマンド役割
copyファイルをコピー
xcopyフォルダ内のファイルやサブフォルダをコピー
robocopy再試行などの条件を指定してフォルダをコピー
moveファイルを移動
delファイルを削除

コピー先のフォルダを作ってからコピーする

data.txtがあるフォルダで実行します。/-yを付けると、コピー先に同名ファイルがある場合に上書きを確認できます。

if not exist "backup\" mkdir "backup"
copy /-y "data.txt" "backup\"
if errorlevel 1 exit /b 1

ファイルを移動する

if not exist "archive\" mkdir "archive"
move /-y "result.txt" "archive\"

result.txtをarchiveフォルダへ移します。移動後は元の場所からファイルがなくなる点がコピーとの違いです。

対象を確認してからログファイルを削除する

まず、作業中のフォルダと削除対象を表示します。この段階では削除しません。

cd
dir /b /a-d "*.log"

一覧に必要なファイルがないことを確認したら、次を実行します。/pを付けると、ファイルごとに確認が入ります。

del /p "*.log"

delはゴミ箱を経由しません。別のフォルダで実行していないか、対象に必要なファイルが含まれていないかを確認してください。

フォルダを作る・移動する・一覧を見る

コマンド役割
mkdir(md)フォルダを作る
rmdir(rd)空のフォルダを削除する。/sを付けると配下も削除する
cdカレントフォルダを変える
dirファイルとフォルダの一覧を表示する
if not exist "work\" mkdir "work"
cd /d "work"
if errorlevel 1 exit /b 1
dir
pause

パスは引用符で囲むと、空白を含む名前も扱えます。cdの /d は、移動先に合わせてドライブも変更する指定です。

ifで条件に合うときだけ処理する

ファイルの存在確認にはif exist、終了コードの確認にはif errorlevelを使います。

if exist "data.txt" echo data.txt exists.

if errorlevel 1は「終了コードが1以上なら」という意味です。1と等しいかだけを調べる書き方ではありません。

直前の終了コードif errorlevel 1の判定
0偽:後ろの命令を実行しない
1真:後ろの命令を実行する
2真:後ろの命令を実行する

コピーに失敗したら、その場でBATを終了する例です。判定は、確認したいコマンドの直後に置きます。

copy /-y "data.txt" "data-copy.txt"
if errorlevel 1 exit /b 1
echo Copy completed.

成功・失敗を表す数値はコマンドによって異なります。例えばrobocopyは、8以上でコピー失敗を含む状態です。0以外を一律に失敗と扱わず、使うコマンドの仕様を確認しましょう。

forで複数ファイルを順番に処理する

カレントフォルダ内のテキストファイル名を表示する例です。

for %%f in (*.txt) do echo "%%f"
要素意味
%%f順番に取り出したファイル名が入る変数
in (*.txt)対象はカレントフォルダの.txtファイル
do各ファイルに対して実行する命令を続ける

BAT内では%%f、コマンドプロンプトへ直接入力するときは%fと書きます。ファイルを引数として渡す場合は、空白を含む名前に備えて引用符で囲みます。

サブフォルダ内も含めて表示する場合は /r を付けます。

for /r %%f in (*.txt) do echo "%%f"

一括処理は、最初にechoで対象を表示し、意図した範囲になっているか確かめると安心です。ログの削除だけなら、ファイル操作の節にあるdel /pの例を使えます。

setで値を使い回す

set "FOLDER=backup files"
if not exist "%FOLDER%\" mkdir "%FOLDER%"

変数は%FOLDER%のように参照します。値に空白がある場合も扱えるように、参照先のパスも引用符で囲みます。

BATがあるフォルダを基準にする

cd /d "%~dp0"
if errorlevel 1 exit /b 1
dir

%~dp0は、このBATが置かれているドライブとフォルダを表します。この例はローカルドライブ向けです。共有フォルダのUNCパスを扱う場合はpushd・popdを検討してください。

実行ファイルを探す場所はPATH環境変数で管理されています。pathはその確認・設定に使えます。既存のPATHを不用意に置き換えると、ほかのコマンドが見つからなくなるので注意しましょう。

treeでフォルダ構成を表示・保存する

treeはフォルダ構成をツリー形式で表示するコマンドで、BATからも使えます。ファイル名を含めるなら /f、罫線を通常の文字にするなら /a を付けます。

tree /f /a
pause

一覧をテキストファイルへ保存する場合は、出力先を指定します。

tree /f /a > "folder-list.txt"

同名のfolder-list.txtがあると上書きされます。出力先が調査対象内にあると、出力ファイル自身も一覧に含まれる場合があります。資料に使うときは、個人名などを含むパスが出ていないか確認しましょう。

ネットワークやアプリの状態を確認する

コマンド用途
ping指定した相手から応答があるか確認
ipconfigPCのIPアドレスなどを確認
taskkillプロセスを終了
ping example.com
ipconfig
pause

pingは相手側の設定で応答しない場合もあり、応答がないだけで通信全体の障害とは断定できません。ipconfigの結果を共有するときは、必要な情報だけを抜き出しましょう。

次の例は、名前が一致するExcelプロセスを強制終了します。通常はアプリの終了操作を使い、応答しないときなどに限って検討してください。

taskkill /im excel.exe /f

強制終了すると未保存の内容が失われる可能性があります。複数のExcelプロセスに影響する場合もあります。権限不足で終了できないこともあります。

必要なコマンドから一つずつ試そう

コマンドを全部覚える必要はありません。まずは表示や一覧確認の例で動きを確かめ、コピー・移動・削除へ進むと理解しやすくなります。処理が複雑になったら、PowerShellなど別の方法も検討しましょう。

仕様の確認:Microsoft Learn:if / Microsoft Learn:exit / Microsoft Learn:call / Microsoft Learn:start / Microsoft Learn:for / Microsoft Learn:del / Microsoft Learn:tree / Microsoft Learn:robocopy