批量创建文件夹并根据部分文件名重新定位文件

时间:2017-08-15 22:16:28

标签: batch-file

我需要根据文件名的前八个字符创建文件夹并将文件重定位到文件夹。文件看起来像:

GG001652 - 5211_Infoscitex.xls
GG001652 - 5211-截至7.31.12.pdf
GG001570 - 7575 FSR(3.31.2010).pdf
GG001570 - 7575_IC_6.30.12.xlsx
GG001570 - 7575_SF 425_6.30.12.xls

我希望批处理创建两个文件夹:

GG001622
GG001570

每个包含以这8个字符开头的文件。文件长度和术语不一致,但前8个字符是标准化的,文件类型包括.pdf,.doc,.docx,.xls,.xlsx和.msg

在这篇文章中花了几个小时试图修改Magoo的代码,但是不能让我的生活让它发挥作用:

Batch create folders based on part of file name and move files into that folder

有一个我需要见面的工作截止日期,非常感谢所提供的任何帮助。

1 个答案:

答案 0 :(得分:0)

如果前8个字符后跟空格,则为 使用for / f将名称拆分为默认分隔符空格和令牌1.请参阅ss64.com/nt/for_f

@Echo off
for /f "delims=" %%A in (
  'DIr /B /A-D "* - *.*" ^| findstr /I "^[PG]G[0-9][0-9][0-9][0-9][0-9][0-9].-..* '
) Do for /f %%B in ("%%A") do (
    MD %%B >NUL 2>&1 
    Move "%%A" %%B
)

第一次迭代现在被替换为更复杂的for / f解析dir输出,它被一个带有RegEx的findstr过滤,以匹配描述的名称结构。
一个P或G后跟一个G后跟6个数字。