Windowsバッチファイル

バッチファイルのファイル・フォルダ操作【copy・move・del・xcopy・robocopy完全ガイド】

Windowsバッチファイル
記事内に広告が含まれています。

ファイルやフォルダの操作はバッチファイルの最も重要な用途のひとつです。この記事では copymovedelmkdirrobocopy の使い方を、コマンドの意味・オプションの解説・実践例とともに詳しく紹介します。

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\2025

delコマンド:ファイルを削除する

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コマンド:フォルダごとコピーする

xcopycopy の拡張版で、フォルダの中身ごとコピーできます。サブフォルダも含めてコピーしたい場合によく使います。

@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 /I

robocopyコマンド:高機能なバックアップ・同期ツール

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:10

robocopyの終了コード(errorlevel)

robocopyはコピー結果をerrorlevelで返しますが、errorlevel 0〜7は正常という独自の仕様があります。8以上がエラーです。

errorlevel意味
0コピーするファイルなし(変更なし)
1ファイルのコピーに成功
2コピー先に余分なファイルがある
31+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管理人

コメント

タイトルとURLをコピーしました