• ベストアンサー

bat ファイル数3個以下のフォルダをまとめる

フォルダAの中にbatファイルとフォルダ1、フォルダ2、・・・フォルダnがあります。 フォルダ1~nにおいて、フォルダ内のファイル数が3個以下のファイルを一つのフォルダにまとめたい。 まとめるフォルダの名前はA_1とし、フォルダAの中に作成します。 まとめた後は、ファイル数が3個以下だったフォルダは削除。 以上のことを実現できるbatファイルを提示お願いしたいです。 ちょっと難しいようでいたら、その旨回答願います。

質問者が選んだベストアンサー

  • ベストアンサー
  • UY-Scuti
  • ベストアンサー率85% (17/20)
回答No.2

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" ) ) ) ) ------------------------------------- ※ 移動するファイル名は重複していないこと。

gennya
質問者

お礼

回答ありがとうございます。 期待通り作動するときと、そうでない時がありました。 これをベースに勉強させていただきます。

Powered by GRATICA

その他の回答 (3)

  • UY-Scuti
  • ベストアンサー率85% (17/20)
回答No.4

質問文では、A_1 (全角文字の A) 補足では、A_1 (半角文字の A) 最初の回答は、質問文から、全角文字の A を使ったのですが、どっちですかね? バッチファイルのコードの中に全角文字が含まれる場合は、保存時の文字コードは、Shit_JIS相当で保存。メモ帳なら、ANSI にしないと文字化けするのだけど、それかな?

gennya
質問者

お礼

何度もありがとうございます すべて解決しました。 大変ありがとうございました

Powered by GRATICA
  • UY-Scuti
  • ベストアンサー率85% (17/20)
回答No.3

move "%%a\*" "A_1\" ↓↓ move "%%a\*" "%F%\" せっかく変数にセットしたので・・・ 「そうでない時」・・・ってどんな時だろう・・・。 対象フォルダにスペースがある? 3行目の %%a → "%%a" ダブルクォーテーションで囲むとか・・・。

gennya
質問者

お礼

回答ありがとうございます。

Powered by GRATICA
gennya
質問者

補足

何度もありがとうございます。 不具合1 新しく作られるフォルダ名が「 ・。_1」となります。 A_1となる予定ですよね? 不具合2 フォルダ名に「新しいフォルダー - コピー」を使っていて、スペースが含まれていたことに気づきませんでいた。 ⇒””の付与で解決しました。

  • f272
  • ベストアンサー率46% (8467/18126)
回答No.1

> フォルダ1~nにおいて、フォルダ内のファイル数が3個以下 そこにはサブフォルダはないんでしょうか?

gennya
質問者

お礼

回答ありがとうございます。 サブフォルダはありません。 お願いします。

Powered by GRATICA

関連するQ&A