ファイル振り分け整理ソフトmovefilesを使って、納品された 1.jpg、2.jpg…の複数データを、1.jpg→フォルダ1の中のimgフォルダ、2.jpg→フォルダ2の中のimgフォルダに振り分けたいのです。
(同じ数字の画像を同じ数字のフォルダの中のimgフォルダに振り分けたい)
実際の数字は25826、18742等のアトランダムで納品されてくるので、、
movefilesのexcelで指定すれば(数字を入力してやれば)振り分けられますが、それなら手作業で振り分けるの労力は同じなのです。
同じ数字を認識して、振り分けるようには出来ないものでしょうか?
またそれが出来るソフトを知っているかたがいれば教えて頂けますでしょうか?
宜しくお願い致します。
バッチファイルで十分ではないかと。
あるディレクトリに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 個のファイルを移動しました。
何かの参考になれば。
バッチファイルで十分ではないかと。
あるディレクトリに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 個のファイルを移動しました。
何かの参考になれば。
やっつけなので、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
tdoiさま。
本当に詳しく説明まで頂けて感謝します。
AAAの部分は必ず数字なので、「sample_」が使われることはないので大丈夫です。
今までバッチファイルというと、フォトショップでしか使ったことがなかったので、自分で作れるなんて驚きです。
私にはハードルが高いバッチファイルを使うことができてとても感激です。
自分で自由に作れるようになったら最高ですね!…夢のまた夢…ですが(^_^;)
見ず知らずの私に時間を割いていただきありがとうございました。
バッチファイルのループに興味があったので、
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ループ処理テスト
バッチファイルの作成方法や使用方法は、、
方言じゃないけどイロイロあるので、
右クリックで作成していく やりかたが参考となれば幸いです。
画像で説明して頂いたおかげで、わたしにもよくわかりました。
このYouTubeがなかったら、私には絶対に理解不可能だったと思います。
このビデオは私のお宝です。ありがとうございました。
やっつけなので、AAAの部分にsample_とかあるとうまく動きませんが、こんな感じで今回は大丈夫では?
やってることは単純です。
大枠の動作は
です。
1つ目が、同じディレクトリの".jpg"で終わる名前のファイルに対して、moveImageというサブルーチンを実行しています。2つ目は同様に"-2012.html"で終わるファイルに対して、moveHTMLというサブルーチンを実行しています。
moveHTMLというサブルーチンは、
として記述しています。
2012/02/14 22:13:10やってることは、渡されたファイル名は%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
tdoiさま。
2012/02/14 22:49:05本当に詳しく説明まで頂けて感謝します。
AAAの部分は必ず数字なので、「sample_」が使われることはないので大丈夫です。
今までバッチファイルというと、フォトショップでしか使ったことがなかったので、自分で作れるなんて驚きです。
私にはハードルが高いバッチファイルを使うことができてとても感激です。
自分で自由に作れるようになったら最高ですね!…夢のまた夢…ですが(^_^;)
見ず知らずの私に時間を割いていただきありがとうございました。