ファイルやフォルダの操作はバッチファイルの最も重要な用途のひとつです。この記事では copy・move・del・mkdir・robocopy の使い方を、コマンドの意味・オプションの解説・実践例とともに詳しく紹介します。
copyコマンド:ファイルをコピーする
copy はファイルを別の場所に複製するコマンドです。元のファイルはそのまま残ります。
@echo off
rem 基本的なコピー(コピー元 コピー先の順に指定)
copy C:\work\data.txt D:\backup\data.txt
rem 同じフォルダ内でリネームしながらコピー
copy C:\work\report.txt C:\work\report_backup.txt
rem ワイルドカード(*)で複数ファイルをまとめてコピー
rem *.txt = 拡張子が.txtのファイルすべて
copy C:\work\*.txt D:\backup\
rem /Y オプション:上書き確認を表示しない(自動的に上書き)
copy /Y C:\work\data.txt D:\backup\data.txt
rem コピー後にerrorlevelで成功確認
if %errorlevel%==0 (
echo コピー成功
) else (
echo コピー失敗
)よくある失敗:コピー先にフォルダ名だけ書くとフォルダ名のファイルとして保存されてしまいます。フォルダにコピーするときは末尾に \ を付けましょう。
moveコマンド:ファイルを移動・リネームする
move はファイルを別の場所に移動するコマンドです。コピーと違い、元の場所からはなくなります。同じフォルダ内で使えばリネームになります。
@echo off
rem ファイルを別フォルダに移動
move C:\work\old.txt D:\archive\old.txt
rem 同じフォルダ内でリネーム(移動ではなく名前変更になる)
move C:\work\temp.txt C:\work\result.txt
rem /Y オプション:上書き確認なし
move /Y C:\work\*.log D:\logs\
rem フォルダごと移動することもできる
move C:\work\2025 D:\archive\2025delコマンド:ファイルを削除する
del(または erase)はファイルを削除します。ごみ箱には入らず完全削除になるため注意が必要です。フォルダ自体は削除できません(フォルダには rmdir を使います)。
@echo off
rem ファイルを削除
del C:\work\temp.txt
rem /Q オプション:確認メッセージなしで削除(Quietモード)
del /Q C:\work\temp.txt
rem /F オプション:読み取り専用ファイルも強制削除(Force)
del /F C:\work\readonly.txt
rem ワイルドカードで一括削除
del /Q C:\work\*.tmp
del /Q C:\logs\*.log
rem フォルダを削除するには rmdir(rd)を使う
rem /S = サブフォルダも含めて削除、/Q = 確認なし
rmdir /S /Q C:\work\TempFolder注意:del /Q C:\work\*.* のようにすべてのファイルを削除するコマンドは、フォルダを間違えると大惨事になります。実行前に必ず対象フォルダを確認しましょう。
mkdirコマンド:フォルダを作成する
mkdir(または md)は新しいフォルダを作成します。/ なしで深い階層のフォルダも一度に作れます。
@echo off
rem 新しいフォルダを作成
mkdir C:\work\NewFolder
rem 深い階層も一度に作成できる
mkdir C:\work\2026\04\23
rem 存在確認してから作成するのが安全
if not exist "C:\work\backup" (
mkdir C:\work\backup
echo backupフォルダを作成しました
) else (
echo backupフォルダは既に存在します
)
rem 日付を使って日次フォルダを自動作成する例
set TODAY=%DATE:~0,4%%DATE:~5,2%%DATE:~8,2%
mkdir C:\backup\%TODAY%
echo %TODAY%のバックアップフォルダを作成しましたxcopyコマンド:フォルダごとコピーする
xcopy は copy の拡張版で、フォルダの中身ごとコピーできます。サブフォルダも含めてコピーしたい場合によく使います。
@echo off
rem /S = サブフォルダもコピー(空フォルダは除く)
xcopy C:\work D:\backup\work /S
rem /E = 空フォルダも含めてコピー(/Sより完全なコピー)
xcopy C:\work D:\backup\work /E
rem /Y = 上書き確認なし
rem /I = コピー先がフォルダなら自動的にフォルダとして扱う
xcopy C:\work D:\backup\work /E /Y /Irobocopyコマンド:高機能なバックアップ・同期ツール
robocopy(Robust File Copy)はWindows Vista以降に標準搭載された高機能コピーツールです。差分コピー・リトライ・ログ出力に対応しており、バックアップスクリプトの定番です。
@echo off
rem 基本的な使い方(コピー元 コピー先 コピーするファイルパターン)
robocopy C:\work D:\backup\work
rem /E = サブフォルダも含めてコピー(空フォルダも含む)
robocopy C:\work D:\backup\work /E
rem /MIR = ミラーリング(コピー先にしかないファイルは削除して完全同期)
rem ※コピー先のファイルが削除されるので注意
robocopy C:\work D:\backup\work /MIR
rem /XO = 既にコピー先にある新しいファイルはスキップ(差分のみコピー)
robocopy C:\work D:\backup\work /E /XO
rem /LOG: = ログファイルに結果を保存
robocopy C:\work D:\backup\work /E /LOG:C:\logs\backup.log
rem /R:3 = 失敗時に3回リトライ、/W:10 = リトライ前に10秒待つ
robocopy C:\work D:\backup\work /E /R:3 /W:10robocopyの終了コード(errorlevel)
robocopyはコピー結果をerrorlevelで返しますが、errorlevel 0〜7は正常という独自の仕様があります。8以上がエラーです。
| errorlevel | 意味 |
|---|---|
| 0 | コピーするファイルなし(変更なし) |
| 1 | ファイルのコピーに成功 |
| 2 | コピー先に余分なファイルがある |
| 3 | 1+2の両方 |
| 4〜7 | その他の正常な状態 |
| 8以上 | エラー発生 |
@echo off
robocopy C:\work D:\backup\work /E /LOG:backup.log
rem errorlevel 7以下は正常(robocopyの特殊な仕様)
if %errorlevel% leq 7 (
echo バックアップ完了
) else (
echo バックアップでエラーが発生しました errorlevel: %errorlevel%
)コマンド一覧まとめ
| コマンド | 用途 | 特徴 |
|---|---|---|
| copy | ファイルのコピー | シンプル。ファイル1つ〜ワイルドカード対応 |
| move | ファイルの移動・リネーム | 元ファイルはなくなる |
| del / erase | ファイルの削除 | ごみ箱に入らない完全削除 |
| mkdir / md | フォルダの作成 | 深い階層も一度に作成可能 |
| rmdir / rd | フォルダの削除 | /S /Q でサブフォルダごと削除 |
| xcopy | フォルダごとコピー | サブフォルダ対応、robocopyより古い |
| robocopy | 高機能コピー・同期 | 差分コピー・リトライ・ログ対応。バックアップに最適 |
まとめ
- copyは単純なファイルコピー、robocopyはバックアップや同期など本格的な用途に使う
- delはごみ箱に入らないため、ワイルドカード使用時は特に対象を慎重に確認する
- mkdirはif not existと組み合わせて「なければ作成」のパターンがよく使われる
- robocopyはerrorlevel 7以下が正常という特殊な仕様を必ず覚えておく
現場でバッチファイルを書くようになって最初に覚えたのがrobocopyです。単純なcopyと違い、失敗時のリトライやログ出力ができるので、夜間の自動バックアップに安心して使えます。最初は/Eと/LOGだけ覚えれば十分です。
hobbyshift管理人



コメント