- ベストアンサー
bat ファイル数3個以下のフォルダをまとめる
フォルダAの中にbatファイルとフォルダ1、フォルダ2、・・・フォルダnがあります。 フォルダ1~nにおいて、フォルダ内のファイル数が3個以下のファイルを一つのフォルダにまとめたい。 まとめるフォルダの名前はA_1とし、フォルダAの中に作成します。 まとめた後は、ファイル数が3個以下だったフォルダは削除。 以上のことを実現できるbatファイルを提示お願いしたいです。 ちょっと難しいようでいたら、その旨回答願います。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
set F=A_1 for /d %%a in (フォルダ*) do ( for /f %%b in ('dir /b /a-d %%a 2^>nul ^| find /c /v ""') do ( if %%b leq 3 ( if not exist "%F%" md "%F%" move "%%a\*" "A_1\" rd "%%a" ) ) ) ) ------------------------------------- ※ 移動するファイル名は重複していないこと。
その他の回答 (3)
- UY-Scuti
- ベストアンサー率85% (17/20)
move "%%a\*" "A_1\" ↓↓ move "%%a\*" "%F%\" せっかく変数にセットしたので・・・ 「そうでない時」・・・ってどんな時だろう・・・。 対象フォルダにスペースがある? 3行目の %%a → "%%a" ダブルクォーテーションで囲むとか・・・。
お礼
補足
何度もありがとうございます。 不具合1 新しく作られるフォルダ名が「 ・。_1」となります。 A_1となる予定ですよね? 不具合2 フォルダ名に「新しいフォルダー - コピー」を使っていて、スペースが含まれていたことに気づきませんでいた。 ⇒””の付与で解決しました。
お礼