ファイル名をもとに、フォルダに振り分けたい!

例えば、フォルダ上に以下のようなファイルがあるとする。
・aaa_01.png
・aaa_02.png
・aaa_03.png
・bbb_01.png
・bbb_02.png
各ファイル名は”_”で区切られているので、”_”の左側の文字列でフォルダ名を作り、
そこにファイルを格納したい。

つまり、先程のファイルを以下のように振り分けたい。
「aaa」フォルダに
 ・aaa_01.png
 ・aaa_02.png
 ・aaa_03.png
「bbb」フォルダに
 ・bbb_01.png
 ・bbb_02.png

Windowsならバッチファイルで簡単に処理できる。
振り分けたいファイルの置いてあるフォルダに「file_move.bat」みたいなファイルを作り、ファイルをテキストエディタで開いて以下をコピーし、「file_move.bat」ファイルをダブルクリックすれば実行される。

@echo off
for %%F in (*_*) do (
  for /f "delims=_ tokens=1" %%A in ("%%F") do (
    if not exist "%%A" (
      mkdir "%%A"
    )
    move "%%F" "%%A\"
  )
)
echo 処理が完了しました
pause

解説

for %%F in (*_*) do (

このフォルダに有る、ファイル名に’_’を含むファイルを1つ抽出し、%%Fに代入する。(’_’を含むファイルがある限り続ける)

for /f “delims=_ tokens=1” %%A in (“%%F”) do (

・delims=_:文字列を’_’で分割する
・tokens=1:分割した1番目の文字列を抽出(番号は0からではなく1から数える)

処理としては、%%Fを’_’で分割し、1番目の文字列を%%Aに代入する。
“%%F”という具合に%%Fを””で囲んでいるので、ファイル名について処理する。(””が無いと、ファイルの中身を見に行く)

if not exist “%%A” ( mkdir “%%A” )

フォルダがなければ作成する。

move “%%F” “%%A\”

ファイルを移動

コメント

タイトルとURLをコピーしました