【cmd】サブディレクトリにある全てのファイルを上位にコピーする

これもたまにやりたいときがあるのでメモ

目次

サブディレクトリにある全てのファイルを上位にコピー

ファイル整理したいときとかファイルを1つのフォルダにまとめたいときに使えるbatです。
以下のような場合

1.
2├batファイル.bat
3├AAAフォルダ ─DDDフォルダ ─ foo.txt
4├BBBフォルダ ─ bar.txt
5└CCCフォルダ ─ baz.txt

以下のようになります。

1.
2├batファイル.bat <- 実行
3├AAAフォルダ ─DDDフォルダ ─ foo.txt
4├BBBフォルダ ─ bar.txt
5├CCCフォルダ ─ baz.txt
6├foo.txt
7├bar.txt
8└baz.txt

コピーするファイルの拡張子を
set extension=.txtで設定できます。
拡張子を設定しない場合はset extension=.*でOK
(bat自身もコピーしようとしてエラーが出ますが実害はありません。)

1@echo off
2
3rem "Set file extension"
4set extension=.txt
5
6for /r %%d in (*%extension%) do (
7	copy "%%d" "%~dp0"
8)
9pause