批处理文件拆分文件名并使用新子目录的一部分移入

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

您需要更改 sourcedirdestdir 的设置以适合您的情况。

所需的 MD 命令仅 ECHOed 用于测试目的。 验证命令正确后,将ECHO(MD 更改为MD 以实际创建目录。附加 2>nul 以抑制错误消息(例如,当目录已经存在时)

所需的 MOVE 命令仅 ECHOed 用于测试目的。 确认命令正确后,将ECHO(MOVE更改为MOVE以实际移动文件。附加 >nul 以禁止报告消息(例如 1 file moved

请注意,目录名称中的结尾 space 无关紧要。