- ベストアンサー
ファイルを自動的にフォルダを作り簡単に分類するソフト
oggファイルが約20300個入った 700MBほどのフォルダがあります。 このファイルを設定に時間をかけずに どんな分類方法でもいいので 100個のフォルダを自動に作り その中に約200個ずつ分類させたいのです。 一番要望しているのは「時間をかけない設定で、 自動に作ったフォルダに分類」です。 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
Windowsのバッチファイルで作る気力はありませんが、シェルスクリプトで作ってみました。 ・・・ゴメンナサイゴメンナサイ ・・・バッチファイルもVBScriptも見たくなかったんです(ノ_・。) こーゆー処理ができればいいんですよね? ※oggファイルたくさん持ってないので*.oggというファイルを連番で生成してます。 ファイル名は連番じゃなくても動作に支障ありません。 ----------実行前ここから---------- . <-今居る場所です。ここで実行します。 |-- dest <-この下にoggファイルを分類したいです。 `-- src <-この下には現在oggファイルが入っています。 |-- 0000.ogg |-- 0001.ogg |-- 0002.ogg (途中省略) |-- 0998.ogg |-- 0999.ogg `-- 1000.ogg ※今回は手抜きで1000個しか作りませんでした。 ----------実行前ここまで---------- ↓ ↓ ↓ ↓ ↓ ↓ ----------実行後ここから---------- . |-- dest | |-- dir0 | | |-- 0000.ogg | | |-- 0001.ogg | | |-- 0002.ogg (途中省略) | | |-- 0201.ogg | | `-- 0202.ogg | |-- dir203 | | |-- 0203.ogg | | |-- 0204.ogg (途中省略) | | |-- 0201.ogg | | `-- 0202.ogg | |-- dir203 | | |-- 0203.ogg | | |-- 0204.ogg (途中省略) | |-- 0999.ogg | `-- 1000.ogg `-- src ----------実行後ここまで---------- 上記の処理をするには、このようなシェルスクリプトを実行します。 WindowsでもCygwinというフリーソフト入れれば実行できます。 -----------スクリプトここから------------ # <-シャープで始まる行はコメントです。 # src内の*.oggというファイルの数だけループします # iは何回ループしたかのカウンタです # dirnameは移動先のディレクトリ名の元になります。 $ i=0; dirname='dir'; for file in src/*.ogg do # i(ループ回数)を(20300/100)で割った余りが0か? if [ 0 -eq `expr $i % \`expr 20300 / 100\`` ]; then # dest/dir* というディレクトリを作成 target=dest/${dirname}${i} mkdir -p $target fi # iをカウントアップ i=`expr $i + 1` # oggファイルを移動 mv $file $target done -----------スクリプトここまで------------ -----------処理中イメージここから------------ mkdir dest/dir0 mv src/0000.ogg dest/dir0 mv src/0001.ogg dest/dir0 mv src/0002.ogg dest/dir0 (途中省略) mv src/0201.ogg dest/dir0 mv src/0202.ogg dest/dir0 mkdir dest/dir203 mv src/0203.ogg dest/dir203 mv src/0204.ogg dest/dir203 (途中省略) mv src/0404.ogg dest/dir203 mv src/0405.ogg dest/dir203 mkdir dest/dir406 mv src/0406.ogg dest/dir406 mv src/0407.ogg dest/dir406 (以下省略) -----------処理中イメージここまで------------ ・・・鳴れればバッチファイルよりよっぽど簡単なんですけどね... (移動先のディレクトリ名に一工夫必要だなぁ)
その他の回答 (1)
- vaidurya
- ベストアンサー率45% (2714/5983)
何らかの項目で、200程度ずつに分布しているのでなければ 単に、数をカウントして200ずつ移動するしかないと思います。 そして、そういう分類が必要な条件というのは 今時そう無い話ですから、対応したツールは無いかもしれません。 バッチファイルで100のディレクトリを作って 手動で200ずつ移動させても、それほど時間はかからないと思いますが… 昔、私もやっていましたが… dir出力を元に、シーケンシャル処理するバッチファイルを作って そういう処理をやることは難しくありません。 要はテキストエディタの置換機能とかで200行ごとに 移動先のディレクトリ名を変えていけばいいわけです。 (ただこれキーボードショートカット無しで反復すると死ねます) 普通にスクリプト言語で処理すればいいんでしょうが 不慣れな作業でバグにはまるくらいなら 手間かけて、シーケンシャル処理させるほうが確実だと思っています。 今も大量の動画をまとめて変換するときとかやりますし…
お礼
迅速で丁寧な回答、ありがとうございます。 とりあえず、手動でやってみることにしました。 フォルダをコピーを連続して作り、リネームツールで 連番のフォルダを作成 そして、windows付属の検索で 1000個前後が出てくるように検索して フォルダに手動で移動 それで、とりあえずは1000個ごとに分けることは できるようになりました。
補足
先ほど、お礼の通りやっていたのですが これでも結構大変です。 ですが、vaiduryaさんの提案している 下記のやり方がわかりません >dir出力を元に、シーケンシャル処理するバッチファイルを作って >そういう処理をやることは難しくありません。 >要はテキストエディタの置換機能とかで200行ごとに >移動先のディレクトリ名を変えていけばいいわけです。 >(ただこれキーボードショートカット無しで反復すると死ねます) txtファイルに何かを書き込んで、batファイルとして 実行するのかな?と思いますが そのtxtに記述する文章がわかりません。 もし、説明してくださるのなら よろしくお願いします。
お礼
丁寧な回答、ありがとうございます。 cygwinですが、googleで検索しますと 「cygwin インストール 失敗」という項目もあり これをインストールするには少々、勇気が要ります。 失敗しても、windowsには一切悪影響を及ぼさないのなら 放置すればいいのですが それすらも分からないので、困った状態です。 ちなみにメインパソコンはwindowsXP HOME SP2 CPU:Core2Duo E6300、マザーボード:Intel BOXDG965SSCK、 メモリ1GBです。 サブパソコンにはXP Proやwin2000、Win98など、多彩で スペックもメモリが64MBや128MBしかないものや 1GB程度積んでいる物 CPUもCeleron 1GHz相当に満たないものなどや Pentium4 3.20GHzなど、色々あります。 CPUやメモリが少なくて、OSも問わないのであれば 一番、使わないパソコンで実践しても良いのですが…。