Board logo

标题: [文件操作] [已解决]BAT如何批量将含有关键字符的文件移动到含有关键字符的文件夹 [打印本页]

作者: 城外无诚    时间: 2021-9-1 22:56     标题: [已解决]BAT如何批量将含有关键字符的文件移动到含有关键字符的文件夹

本帖最后由 城外无诚 于 2021-9-2 11:31 编辑

公司收集人员证件,“人员”文件夹下含有以“A”——“Z”姓氏首字母名命的子文件夹,每个子文件夹下有以“姓氏首字母+序号+姓名”为格式的个人文件夹。如“A'文件夹下有”A01安然“、”A121安戈俊“,”G“文件夹下有”G01高峰“、”G22高建国“...
现新收集了一批证件,统一存储于一个文件夹内。证件命名格式为”姓名-证书名称“,如”张三-注册建造师“、”李四方-造价工程师“。
求如何通过bat批量将新收集的证件移动至相关人员的个人文件夹中。
作者: 城外无诚    时间: 2021-9-2 08:33

求大佬帮忙!
作者: qixiaobin0715    时间: 2021-9-2 08:57

回复 2# 城外无诚
如果收集的文件在D:\IdInformation中,将下列代码放在“人员”文件夹下:
  1. @echo off
  2. set Folder=D:\IdInformation
  3. copy "%Folder%\*.*" "%~dp0"
  4. for /f "delims=-" %%a in ('dir /b /a-d') do move "%%a-*.*" "*%%a\"
  5. pause
复制代码

作者: Batcher    时间: 2021-9-2 09:07

回复 1# 城外无诚


    序号的数字个数不固定是吗,有的2位数字,有的是3位数字?
作者: Batcher    时间: 2021-9-2 09:08

回复 3# qixiaobin0715


    张高五、高五,可能有类似这样的两个名字吧。
作者: qixiaobin0715    时间: 2021-9-2 09:41

回复 5# Batcher
是的,忽略了。那样的话代码就要复杂一些了。
作者: 城外无诚    时间: 2021-9-2 09:43

回复 4# Batcher


    对,从01开始,最多就到3位数。
作者: 城外无诚    时间: 2021-9-2 09:44

回复 5# Batcher


    是的,我现在用的方法就是会有这种情况,名字前两个字一样的话文件会同时复制到两个人的文件夹中。
作者: 城外无诚    时间: 2021-9-2 09:47

回复 3# qixiaobin0715


    您好,我试了一下。有两个问题。
    1、文件只是复制到了“人员”文件夹目录下,并没有复制到对应人员的个人文件夹。
    2、其他不含关键字的文件也一并复制过来了。
作者: qixiaobin0715    时间: 2021-9-2 09:56

回复 9# 城外无诚
请你分别tree /f一下“人员”和“收集的人员信息”文件夹,发上来看看;建议将文件夹名中的序号都改为001/002...三位数,可以减少代码的复杂性,处理起来效率也高。
作者: qixiaobin0715    时间: 2021-9-2 10:09

文件名中“-”前后是否存在空格?
作者: Batcher    时间: 2021-9-2 10:57

回复 1# 城外无诚


“人员”文件夹
“证件”文件夹
“test.bat”文件
放在同一个目录下

请参考Q-04把bat文件保存为ANSI编码:
https://mp.weixin.qq.com/s/6lbb97qUOs1sTyKJfN0ZEQ
  1. @echo off
  2. cd /d "%~dp0"
  3. set "SrcFolder=证件"
  4. set "DstFolder=人员"
  5. for /f "tokens=1-2 delims=-" %%a in ('dir /b /a-d "%SrcFolder%"') do (
  6.     for /f "delims=" %%i in ('dir /b /ad "%DstFolder%"') do (
  7.         pushd "%DstFolder%\%%i"
  8.         for /f "delims=" %%j in ('dir /b /ad') do (
  9.             for /f "tokens=1-2 delims=0123456789" %%k in ("%%j") do (
  10.                 if "%%a" equ "%%l" (
  11.                     move /y "%~dp0%SrcFolder%\%%a-%%b" "%~dp0%DstFolder%\%%i\%%j\"
  12.                 )
  13.             )
  14.         )
  15.         popd
  16.     )
  17. )
复制代码

作者: 城外无诚    时间: 2021-9-2 11:28

回复 12# Batcher


    可以用,非常感谢!




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