Board logo

标题: [文件操作] [已解决]批处理按关键字移动对应的文件到指定文件夹里 [打印本页]

作者: 022540    时间: 2019-3-19 21:23     标题: [已解决]批处理按关键字移动对应的文件到指定文件夹里

按关键字清单,移动关键字所对应的文件到指定文件夹里
待移动的文件名规律:由"-"分为N个部分,如:"H01-AMa46306-U678DEC070-1-VL-_R256.ab1", 其中关键字为第1个"-"和第2个"-"之间的部分,如"AMa46306",关键字在所有文件中是唯一的。

1. 初始状态:存放关键字清单的txt和待移动的文件在同一个文件夹。
2. 运行程序:在该文件夹中新建一些文件夹,文件夹名称满足2个条件:1) 文件夹的名称是取关键字所对应的文件名的第2个"-"和第5个"-"之间的部分。2)只有关键字清单中出现的才新建文件夹,不在清单中的不建。并且可能有多个关键字对应同一个文件夹。
3. 移动关键字所对应的文件到这些新建的文件夹,剩下的文件不移动。

如: 清单中出现 AMa46306AMa46307, 则根据文件名新建文件夹"U678DEC070-1-VL",并将其对应文件"H01-AMa46306-U678DEC070-1-VL-_R256.ab1" 和 H02-AMa46307-U678DEC070-1-VL-_R256.ab1 移动到文件夹中。
作者: zaqmlp    时间: 2019-3-19 21:38

本帖最后由 zaqmlp 于 2019-3-19 21:41 编辑
  1. @echo off
  2. title 互助互利,代码可用,扫码头像,感谢赞助;有问题,加QQ956535081及时沟通
  3. cd /d "%~dp0"
  4. for /f "delims=" %%a in ('type "清单.txt"') do (
  5.     for /f "delims=" %%b in ('dir /a-d/b *-%%a-*-*-*-*.*') do (
  6.         for /f "tokens=1-5* delims=-" %%c in ("%%b") do (
  7.             if not exist ".\%%e-%%f-%%g\" md ".\%%e-%%f-%%g\"
  8.             echo;"%%b" --^> ".\%%e-%%f-%%g\"
  9.             move /y "%%b" ".\%%e-%%f-%%g\"
  10.         )
  11.     )
  12. )
  13. pause
复制代码

作者: 022540    时间: 2019-3-19 22:05

回复 2# zaqmlp


   提示“系统找不到指定的文件”。

附件已上传,麻烦帮忙看下。
作者: zaqmlp    时间: 2019-3-19 22:13

回复 3# 022540
txt名称改了没,实际跟代码中的是否一致???
作者: 022540    时间: 2019-3-19 22:18

回复 4# zaqmlp


   可以用了,刚刚没有改文件名称。非常感谢老师!
作者: zaqmlp    时间: 2019-3-19 22:23

回复 5# 022540

赞助才是有力的感谢




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2