Reputation: 38
I have a few thousand photographs in a single folder all named with the pattern persons name - location.jpg
, e.g. John Doe - Mountain.jpg
. I'm looking for a batch file that will create folders based on the first part of the file name and move that file and all of the other matching file names into that folder, giving an end result of all of John Doe's pictures in his folder.
Upvotes: 0
Views: 972
Reputation: 79983
@ECHO OFF
SETLOCAL
SETLOCAL ENABLEDELAYEDEXPANSION
SET "sourcedir=U:\sourcedir"
SET "destdir=U:\destdir"
FOR /f "delims=" %%a IN (
'dir /b /a-d "%sourcedir%\*-*.jpg" '
) DO (
FOR /f "tokens=1*delims=-" %%p IN ("%%a") DO (
echo(MD "%destdir%\%%p"
echo(MOVE "%sourcedir%\%%a" "%destdir%\%%p"
)
)
GOTO :EOF
You would need to change the settings of sourcedir
and destdir
to suit your circumstances.
The required MD commands are merely ECHO
ed for testing purposes. After you've verified that the commands are correct, change ECHO(MD
to MD
to actually create the directories. Append 2>nul
to suppress error messages (eg. when the directory already exists)
The required MOVE commands are merely ECHO
ed for testing purposes. After you've verified that the commands are correct, change ECHO(MOVE
to MOVE
to actually move the files. Append >nul
to suppress report messages (eg. 1 file moved
)
Note that the terminating space in the directory name is of no relevance.
Upvotes: 1