根据文件名中的单词来划分子文件夹?

根据文件名中的单词来划分子文件夹?

我对批处理文件有点菜鸟,所以非常感谢您的帮助。我在一个目录中存储了大量文件,我希望根据文件名中的第一个单词将它们分类到子文件夹中。因此,我有如下文件:

C:\Folder\ABC-001
C:\Folder\ABC-002
C:\Folder\EFG-001
C:\Folder\HIJ-002

我希望根据第一个单词将所有文件移动到子文件夹中,最终如下所示:

C:\Folder\ABC\ABC-001
C:\Folder\ABC\ABC-002
C:\Folder\EFG\EFG-001
C:\Folder\HIJ\HIJ-002

请帮助我离开这里。非常感谢!

答案1

对提议的重复项所需的调整很少:

  • 使用一个 for 来迭代文件夹内容%%A,其模式至少包含一个破折号。
  • for /f需要另一个%%A在破折号处拆分名称
  • %%B如果不存在名为 的文件夹,则创建它
  • 将原始文件移动%%A到子文件夹%%B

@Echo off
PushD C:\folder
for %%A in ("*-*.*") do for /f "tokens=1* delims=-" %%B in ("%%A") do (
     If not exist "%%B" MD "%%B"
     Move "%%A" "%%B\"
)
PopD

相关内容