Flat lay of business agenda
Windows環境でファイルを管理していると、「特定の拡張子のファイルだけを別のドライブにコピーしたい」と思う場面があります。例えば、ドキュメントファイル(.docxや.pdf)、画像ファイル(.jpgや.png)、プログラムファイル(.batや.ps1)などを定期的にバックアップするケースです。
手作業でコピーするのは手間がかかりますが、Windowsのバッチファイルを使えば自動で実行でき、業務効率化やバックアップの自動化に役立ちます。この記事では、Windowsバッチで特定の拡張子だけを別ドライブにコピーする方法を、実際のサンプルコードとともに解説します。プログラミング初心者の方でも理解できるように丁寧に説明していきます。
Windowsバッチ(バッチファイル)とは、Windowsのコマンドプロンプトで実行できるコマンドをまとめて記述したテキストファイルのことです。拡張子は「.bat」または「.cmd」として保存します。
例えば、以下のような単純な命令を並べて保存すれば、一度ダブルクリックするだけで複数の処理を自動で実行できます。
echo Hello World
pause
バッチの利点は、手作業で入力するコマンドをまとめ、自動化できる点です。特定の拡張子のファイルコピーも、この仕組みを使えば簡単に実現できます。
ファイルコピーに使う基本的なコマンドは以下の2つです。
copy C:\data\*.txt D:\backup\
この例では、Cドライブの C:\data
フォルダにある「.txt」ファイルをすべてDドライブの backup
フォルダにコピーします。xcopy C:\data\*.txt D:\backup\ /S /Y
/S
… サブディレクトリも含めてコピー/Y
… 上書き確認を表示しないこのように、ワイルドカード *.拡張子
を指定することで、特定の種類のファイルだけをコピーできます。
それでは、実際にバッチファイルを作成して、自動で特定の拡張子を別ドライブにコピーしてみましょう。
@echo off
setlocal
:: コピー元とコピー先を変数で指定
set SOURCE=C:\data
set DEST=D:\backup
:: コピー対象の拡張子
set EXT=txt
echo %SOURCE% から %DEST% へ *. %EXT% ファイルをコピーします...
:: 実行
xcopy "%SOURCE%\*.%EXT%" "%DEST%\" /S /Y
echo コピーが完了しました!
pause
set SOURCE
と set DEST
でコピー元・コピー先を自由に設定可能set EXT
に拡張子を入れるだけで対象を切り替え可能xcopy
コマンドでサブフォルダも含めてコピーこのように変数を使って記述することで、柔軟性の高いバッチファイルになります。
1種類だけではなく、複数の拡張子を対象にしたいケースも多いです。その場合は for
文を使います。
@echo off
setlocal
set SOURCE=C:\data
set DEST=D:\backup
:: 複数拡張子を指定
for %%E in (txt pdf jpg png) do (
echo *.%%E ファイルをコピー中...
xcopy "%SOURCE%\*.%%E" "%DEST%\" /S /Y
)
echo すべてのコピーが完了しました!
pause
for %%E in (...)
で、複数の拡張子をループ処理.txt
、.pdf
、.jpg
、.png
をまとめてコピー可能バッチを作成しただけでは自動で実行されません。定期的にコピーしたい場合は「タスクスケジューラ」を使います。
.bat
ファイルを指定これで、毎日自動的にコピーが実行されるようになります。
例えば、写真を保存しているフォルダから、画像だけを外付けHDDにコピーする場合を想定します。
@echo off
set SOURCE=C:\Users\user\Pictures
set DEST=E:\PhotoBackup
for %%E in (jpg jpeg png gif bmp) do (
echo %%E ファイルをコピー中...
xcopy "%SOURCE%\*.%%E" "%DEST%\" /S /Y
)
echo 画像ファイルのバックアップが完了しました!
pause
これをタスクスケジューラに登録しておけば、写真データの定期バックアップが自動で行えます。
上書き確認が出て処理が止まることがあります。
→ /Y
オプションを付ければ自動的に上書き可能。
→ xcopy
に /S
を追加する。
→ robocopy
コマンドを使うのも有効です。
robocopy C:\data D:\backup *.txt /S
robocopy
はWindowsに標準搭載されており、大量ファイルや差分コピーに強いので業務用途ではこちらがおすすめです。
この記事では、Windowsバッチを使って特定の拡張子だけを別ドライブにコピーする方法を解説しました。
copy
や xcopy
で拡張子を指定してコピーできるfor
ループで処理できるrobocopy
が便利バッチファイルをうまく活用することで、日々のファイル管理がぐっと楽になります。業務のバックアップや個人データの保護に、ぜひ試してみてください。