毎日ゆる~く穏やかに過ごすための方法を紹介 >>

深い階層のフォルダーから特定のファイルを一か所に集める方法

パソコン小技 IT

こんにちは、作者のぷんまるです。(プロフィールはこちら♪)

仕事をしていると、たまにこんな場面ってありませんか?
特にSEの仕事をしている人はあるかもしれませんね(´_ゝ`)

たまにある悩み

このフォルダーの中から、●●.logだけを集めたい!
でも階層も深いし、ファイル数も多すぎて、集めるの大変…
一気に一か所に集めたいよ~(;´Д`)

はい、アンサー行きましょう!

まずコマンドプロンプトを開きましょう。

*コマンドプロンプトは「Windowsキー」+「R」を押して「cmd」を入力してOKを押すよ

続いてこのコマンドを入力します。赤字の箇所は変更してね。

cd /d コピー元フォルダーのパス
for /r %i in (ファイル名) do copy %i コピー先フォルダー\

ファイル名には「*」ワイルドカードを使ってみよう

ワイルドカードとは…なんでもあてはまる特殊文字のことだよ。

例えば…
*.logと指定すれば、AAA.logやあああ.logなどが含まれるようになります。


それでは具体例を見てみよう!

例えばこういう場合☟ファイルがいっぱい!

C:\TEST
├─1月
│ ├─1日
│ │ 0101_A.log
│ │ 0101_A.zip
│ │ 0101_B.log
│ │ 0101_B.zip
│ │ 0101_C.log
│ │ 0101_C.zip
│ │
│ ├─2日
│ │ 0102_A.log
│ │ 0102_A.zip
│ │ 0102_B.log
│ │ 0102_B.zip
│ │ 0102_C.log
│ │ 0102_C.zip
│ │
│ └─3日
│ │0103_A.log
│ │0103_A.zip
│ │0103_B.log
│ │0103_B.zip
│ │0103_C.log
│ │0103_C.zip

├─2月
│ ├─1日
│ │ 0201_A.log
│ │ 0201_A.zip
│ │ 0201_B.log
│ │ 0201_B.zip
│ │ 0201_C.log
│ │ 0201_C.zip
│ │
│ ├─2日
│ │ 0202_A.log
│ │ 0202_A.zip
│ │ 0202_B.log
│ │ 0202_B.zip
│ │ 0202_C.log
│ │ 0202_C.zip
│ │
│ └─3日
│ │0203_A.log
│ │0203_A.zip
│ │0203_B.log
│ │0203_B.zip
│ │0203_C.log
│ │0203_C.zip

└─3月
│ ├─1日
│ │0301_A.log
│ │0301_A.zip
│ │0301_B.log
│ │0301_B.zip
│ │0301_C.log
│ │0301_C.zip

├─2日
│ │0302_A.log
│ │0302_A.zip
│ │0302_B.log
│ │0302_B.zip
│ │0302_C.log
│ │0302_C.zip

└─3日
││0303_A.log
││0303_A.zip
││0303_B.log
││0303_B.zip
││0303_C.log
││0303_C.zip

*補足
こういう一覧を表示したい場合は、同じようにコマンドプロンプトでこのコマンドを実行してみてね♪
tree /f ファイルパス


この例だと、C:\TESTというフォルダーの下にいろんなフォルダーやファイルがあります。

この中から拡張子が「.log」というファイル(青字)だけを一か所にコピーします。
コピー先はC:\抽出先というフォルダーにしてみます。

コマンドプロンプトを開いて、以下を実行します。

cd /d C:\TEST
for /r %i in (*.log) do copy %i C:\抽出先\


ちなみに普通にこういうやり方でもできるけど、ファイル数が多すぎたりすると検索に時間がかかってしまうのです(゚д゚)!最悪固まる…!

ファイル数が少ない時はいいけど、何百、何千とある時は今回紹介したやり方で試してみてね(*´ω`)

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