例えば、フォルダ上に以下のようなファイルがあるとする。
・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\”
ファイルを移動
コメント