人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

ファイル振り分け整理ソフトmovefilesについて質問をお願いします。
ファイル振り分け整理ソフトmovefilesを使って、納品された 1.jpg、2.jpg…の複数データを、1.jpg→フォルダ1の中のimgフォルダ、2.jpg→フォルダ2の中のimgフォルダに振り分けたいのです。
(同じ数字の画像を同じ数字のフォルダの中のimgフォルダに振り分けたい)
実際の数字は25826、18742等のアトランダムで納品されてくるので、、
movefilesのexcelで指定すれば(数字を入力してやれば)振り分けられますが、それなら手作業で振り分けるの労力は同じなのです。
同じ数字を認識して、振り分けるようには出来ないものでしょうか?
またそれが出来るソフトを知っているかたがいれば教えて頂けますでしょうか?
宜しくお願い致します。

●質問者: junemiyo
●カテゴリ:コンピュータ ウェブ制作
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● tdoi
ベストアンサー

バッチファイルで十分ではないかと。
あるディレクトリにJPGファイルがいくつもあって、それをそのディレクトリ以下の数字ディレクトリに配置したいのであれば、次のようなバッチファイルで実行できます。

for %%F in (*.jpg) do mkdir %%~nF; %%~nF\img
for %%F in (*.jpg) do move %%F %%~nF\img\%%F

このバッチファイルをmovefiles.batとでも名前をつけて同じディレクトリに保存して実行すれば期待する動作になるかと。既にディレクトリが存在していることが保証されているなら、1行目は消してください。

コマンドプロンプトで操作するならば、こんな感じです。色々出てますが、状況説明と出力がほとんで、「movefile.bat」と入力するだけです。
もちろん、エクスプローラから実行しても大丈夫です。

C:\・・・>dir
 ドライブ C のボリューム ラベルがありません。
 ボリューム シリアル番号は XXXX-XXXX です

 C:\・・・ のディレクトリ

2012/02/13 20:28 <DIR> .
2012/02/13 20:28 <DIR> ..
2012/02/13 20:28 0 1.jpg
2012/02/13 20:28 0 100.jpg
2012/02/13 20:28 0 2.jpg
2012/02/13 20:28 0 3.jpg
2012/02/13 20:28 0 5.jpg
2012/02/13 20:25 92 movefile.bat
 6 個のファイル 92 バイト
 2 個のディレクトリ 92,884,684,800 バイトの空き領域

C:\・・・>movefile.bat

C:\・・・>for %F in (*.jpg) do mkdir %~nF; %~nF\img

C:\・・・>mkdir 1; 1\img

C:\・・・>mkdir 100; 100\img

C:\・・・>mkdir 2; 2\img

C:\・・・>mkdir 3; 3\img

C:\・・・>mkdir 5; 5\img

C:\・・・>for %F in (*.jpg) do move %F %~nF\img\%F

C:\・・・>move 1.jpg 1\img\1.jpg
 1 個のファイルを移動しました。

C:\・・・>move 100.jpg 100\img\100.jpg
 1 個のファイルを移動しました。

C:\・・・>move 2.jpg 2\img\2.jpg
 1 個のファイルを移動しました。

C:\・・・>move 3.jpg 3\img\3.jpg
 1 個のファイルを移動しました。

C:\・・・>move 5.jpg 5\img\5.jpg
 1 個のファイルを移動しました。


何かの参考になれば。


tdoiさんのコメント
長くなってしまいましたが・・・。 こんな感じ。 >|| echo off for %%F in (*.jpg) do call :moveImage %%F for %%F in (*-2012.html) do call:moveHTML %%F goto :end :moveHTML set filename=%1% set dir=%filename:-2012.html=% if not exist %dir% mkdir %dir% move %filename% %dir% goto :end :moveImage set filename=%1% set dir=%filename:.jpg=% if not exist %dir% mkdir %dir% if not exist %dir%\img mkdir %dir%\img move %filename% %dir%\img goto :end :end ||<

junemiyoさんのコメント
ありがとうございます!!なんでか理解できないのが悲しいのですが、出来ました!!

junemiyoさんのコメント
tdoiさま。 恐縮なのですが、あと一つお願いできないでしょうか? sample_AAA-2012.html →AAAフォルダに入れる sample_BBB-2012.html →BBBフォルダに入れる これも作業にあるのです。 今までは、手作業でやってきました……地味に。 今回教えて頂いたバッチファイルを流用すればなんとかできると過信していました……やってみると「sample_BBB-2012フォルダ」が新しくできてしまいました。失敗です。 わたしには無理なようです。どうかお願い致します。

tdoiさんのコメント
やっつけなので、AAAの部分にsample_とかあるとうまく動きませんが、こんな感じで今回は大丈夫では? >|| echo off for %%F in (*.jpg) do call :moveImage %%F for %%F in (*-2012.html) do call:moveHTML %%F goto :end :moveHTML set filename=%1% set dir=%filename:-2012.html=% set dir=%dir:sample_=% if not exist %dir% mkdir %dir% move %filename% %dir% goto :end :moveImage set filename=%1% set dir=%filename:.jpg=% if not exist %dir% mkdir %dir% if not exist %dir%\img mkdir %dir%\img move %filename% %dir%\img goto :end :end ||< やってることは単純です。 大枠の動作は >|| for %%F in (*.jpg) do call :moveImage %%F for %%F in (*-2012.html) do call:moveHTML %%F ||< です。 1つ目が、同じディレクトリの".jpg"で終わる名前のファイルに対して、moveImageというサブルーチンを実行しています。2つ目は同様に"-2012.html"で終わるファイルに対して、moveHTMLというサブルーチンを実行しています。 moveHTMLというサブルーチンは、 >|| :moveHTML set filename=%1% set dir=%filename:-2012.html=% set dir=%dir:sample_=% if not exist %dir% mkdir %dir% move %filename% %dir% ||< として記述しています。 やってることは、渡されたファイル名は%1%として参照できるので、まずは、filenameという変数に格納。その上で、変数filenameの文字列に対して、"-2012.html"という部分を""(空文字列)に置換。つまり、-2012.htmlという部分を削除して変数dirに格納しています。。 今回追記したものは、さらに、"sample_"という文字列を削除しています。 あとは、制御構造をうまく保つためにgoto :endが何箇所かに入っているって感じです。 適当にググっただけですが、 ここを読めば、バッチファイルの記述は一通り書いてある気がします。 http://sgry.jp/pgarticles/batch.html 置換処理は、こことかに一通り書いてあるかと。 http://www.atmarkit.co.jp/fwin2k/win2ktips/419batchdate/batchdate.html

junemiyoさんのコメント
tdoiさま。 本当に詳しく説明まで頂けて感謝します。 AAAの部分は必ず数字なので、「sample_」が使われることはないので大丈夫です。 今までバッチファイルというと、フォトショップでしか使ったことがなかったので、自分で作れるなんて驚きです。 私にはハードルが高いバッチファイルを使うことができてとても感激です。 自分で自由に作れるようになったら最高ですね!…夢のまた夢…ですが(^_^;) 見ず知らずの私に時間を割いていただきありがとうございました。

2 ● ken3memo

バッチファイルのループに興味があったので、
id:tdoi さんが作成した回答no1

http://q.hatena.ne.jp/1329129414#a1131723
for %%F in (*.jpg) do mkdir %%~nF; %%~nF\img
for %%F in (*.jpg) do move %%F %%~nF\img\%%F

を使って、勝手にテストしてみました。

batループ処理テスト
D

バッチファイルの作成方法や使用方法は、、
方言じゃないけどイロイロあるので、
右クリックで作成していく やりかたが参考となれば幸いです。


junemiyoさんのコメント
画像で説明して頂いたおかげで、わたしにもよくわかりました。 このYouTubeがなかったら、私には絶対に理解不可能だったと思います。 このビデオは私のお宝です。ありがとうございました。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ