批处理文件拆分文件名并使用新子目录的一部分移入
Batch file to split filenames and use part for new subdir to move into
我在一个文件夹中有几千张照片,所有照片都以 persons name - location.jpg
模式命名,例如John Doe - Mountain.jpg
。我正在寻找一个批处理文件,该文件将根据文件名的第一部分创建文件夹,并将该文件和所有其他匹配的文件名移动到该文件夹中,最终结果是他的文件夹中 John Doe 的所有图片.
@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
您需要更改 sourcedir
和 destdir
的设置以适合您的情况。
所需的 MD 命令仅 ECHO
ed 用于测试目的。 验证命令正确后,将ECHO(MD
更改为MD
以实际创建目录。附加 2>nul
以抑制错误消息(例如,当目录已经存在时)
所需的 MOVE 命令仅 ECHO
ed 用于测试目的。 确认命令正确后,将ECHO(MOVE
更改为MOVE
以实际移动文件。附加 >nul
以禁止报告消息(例如 1 file moved
)
请注意,目录名称中的结尾 space 无关紧要。
我在一个文件夹中有几千张照片,所有照片都以 persons name - location.jpg
模式命名,例如John Doe - Mountain.jpg
。我正在寻找一个批处理文件,该文件将根据文件名的第一部分创建文件夹,并将该文件和所有其他匹配的文件名移动到该文件夹中,最终结果是他的文件夹中 John Doe 的所有图片.
@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
您需要更改 sourcedir
和 destdir
的设置以适合您的情况。
所需的 MD 命令仅 ECHO
ed 用于测试目的。 验证命令正确后,将ECHO(MD
更改为MD
以实际创建目录。附加 2>nul
以抑制错误消息(例如,当目录已经存在时)
所需的 MOVE 命令仅 ECHO
ed 用于测试目的。 确认命令正确后,将ECHO(MOVE
更改为MOVE
以实际移动文件。附加 >nul
以禁止报告消息(例如 1 file moved
)
请注意,目录名称中的结尾 space 无关紧要。