PowerShell+robocopyで拡張子別にファイルを一括移動する方法
概要
本記事では、PowerShellで拡張子別にファイルを一括移動する方法について解説していきます。
というのもGoogle Takeoutから大量にデータをダウンロードすると、画像・動画・JSONがごちゃ混ぜで困りますよね(- -;
手作業で振り分けるのは現実的じゃないので、コマンドでサクッと分類したい所です。
ここではrobocopyを使って、.jpg/.png/.mp4などの拡張子だけを別フォルダへ移動する手順を紹介していきます!
これで大量画像の整理が一瞬で終わります。
それではやっていきましょう!
注意して、自己責任で実行するようにしてください。
目次
初期状態のフォルダ構成
今回の手順実行前のフォルダ構成は下記のようなイメージです。
手順を実行するにつれて、フォルダ内の状態がどう変化するのか各手順に書いているので、参考にしてみてください。
- folder1
- aaa.png
- bbb.json
- folder2
- ccc.mov
- ddd.mp4
- eee.json
手順
再帰的に特定の拡張子のファイルを移動
再帰的にファイルを移動するコマンドを実行します。
実行すると、特定の拡張子のファイルを任意のフォルダに移動することができます。
コマンド
1 | robocopy "[移動元パス]" "[移動先パス] " [拡張子1] [拡張子2 ...] /S /MOV /NFL /NDL |
例:画像&動画のコピー
1 | robocopy ".\google_export\" ".\google_export_photo_only\" *.jpg *.jpeg *.png *.heic *.mp4 *mov *.MOV /S /NFL /NDL |
例:画像&動画の移動(個人的には非推奨)
1 | robocopy ".\google_export\" ".\google_export_photo_only\" *.jpg *.jpeg *.png *.heic *.mp4 *mov *.MOV /S /MOV /NFL /NDL |
- /S
- 再帰的にサブフォルダを探索(空フォルダは無視)
- /MOV
- ファイルを移動(コピー後、元ファイルを削除)
- ※このオプションを無くすと、コピーとなる
- /NFL
- 実行中にファイル一覧のログを表示しない
- ※ このオプションを無くすと、 ログを表示される
- /NDL
- 実行中にディレクトリ一覧のログを表示しない
- ※ このオプションを無くすと、 ログを表示される
移動先パスに画像と動画が配置されることを確認できると思います。
しかしこの方法の場合フォルダ構成も引き継ぐので、
次の手順でフォルダ構成を削除していきます。
- folder1
- aaa.png
- folder2
- ccc.mov
- ddd.mp4
フォルダ構成を削除
robocopyコマンドだとフォルダ構成もコピーされる為、
フォルダ構成を無くし、フォルダ直下にすべてのファイルが配置されるようにします。
念のため新たに作成したフォルダにコピーする形とします。
コマンド
1 | forfiles /P "[移動元パス] " /S /M * /C 'cmd /c copy @path "[移動先フルパス]"' |
例:画像&動画のコピー
1 | forfiles /P ".\google_export_photo_only\" /S /M * /C 'cmd /c copy @path "C:\Users\user1\google_export_photo_only_comp\"' |
- /P
- 検索フォルダを指定
- /S
- サブフォルダをすべて含めて再帰検索
- /M
- 移動対象ファイル名を指定
- ※今回は*なので全部のファイルが対象
- /C
- コマンドを実行
- ※今回はファイルをコピーするコマンドを実行
- @path
- 探査で発見されたファイルパス
- aaa.png
- ccc.mov
- ddd.mp4
ファイルが移動できたか確認
すべてのファイルが正常に移動できたか確認するために、移動元のファイル数と移動先のファイル数が一致していることを確認します
コマンド
1 | (Get-ChildItem "[移動元パス or 移動先パス ].\google_export\" -Recurse -Include [拡張子1] [拡張子2 ...] -File).Count |
例:画像&動画の場合
1 |
|
ここで件数に差異がある場合、重複ファイルが存在する可能性が高いため、確認する。
締め
これでファイルの移動ができたと思います。
コマンド一つ一つは難しいですが、手動でやるより圧倒的に楽に早くできると思います。
こんな感じの便利なコマンドを自分のサイトでは色々紹介しています。
良ければ他の記事も見ていってください!
以上となります。
大事なファイルを安全にお引越ししましょう!
それではお疲れさまでした!