找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 24766|回复: 12

[文件操作] [已解决]BAT如何批量将含有关键字符的文件移动到含有关键字符的文件夹

[复制链接]
发表于 2021-9-1 22:56:23 | 显示全部楼层 |阅读模式
本帖最后由 城外无诚 于 2021-9-2 11:31 编辑

公司收集人员证件,“人员”文件夹下含有以“A”——“Z”姓氏首字母名命的子文件夹,每个子文件夹下有以“姓氏首字母+序号+姓名”为格式的个人文件夹。如“A'文件夹下有”A01安然“、”A121安戈俊“,”G“文件夹下有”G01高峰“、”G22高建国“...
现新收集了一批证件,统一存储于一个文件夹内。证件命名格式为”姓名-证书名称“,如”张三-注册建造师“、”李四方-造价工程师“。
求如何通过bat批量将新收集的证件移动至相关人员的个人文件夹中。
 楼主| 发表于 2021-9-2 08:33:26 | 显示全部楼层
求大佬帮忙!
发表于 2021-9-2 08:57:19 | 显示全部楼层
回复 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
复制代码

评分

参与人数 1技术 +1 收起 理由
城外无诚 + 1 乐于助人

查看全部评分

发表于 2021-9-2 09:07:06 | 显示全部楼层
回复 1# 城外无诚


    序号的数字个数不固定是吗,有的2位数字,有的是3位数字?
发表于 2021-9-2 09:08:27 | 显示全部楼层
回复 3# qixiaobin0715


    张高五、高五,可能有类似这样的两个名字吧。
发表于 2021-9-2 09:41:40 | 显示全部楼层
回复 5# Batcher
是的,忽略了。那样的话代码就要复杂一些了。
 楼主| 发表于 2021-9-2 09:43:51 | 显示全部楼层
回复 4# Batcher


    对,从01开始,最多就到3位数。
 楼主| 发表于 2021-9-2 09:44:48 | 显示全部楼层
回复 5# Batcher


    是的,我现在用的方法就是会有这种情况,名字前两个字一样的话文件会同时复制到两个人的文件夹中。
 楼主| 发表于 2021-9-2 09:47:36 | 显示全部楼层
回复 3# qixiaobin0715


    您好,我试了一下。有两个问题。
    1、文件只是复制到了“人员”文件夹目录下,并没有复制到对应人员的个人文件夹。
    2、其他不含关键字的文件也一并复制过来了。
发表于 2021-9-2 09:56:57 | 显示全部楼层
回复 9# 城外无诚
请你分别tree /f一下“人员”和“收集的人员信息”文件夹,发上来看看;建议将文件夹名中的序号都改为001/002...三位数,可以减少代码的复杂性,处理起来效率也高。
发表于 2021-9-2 10:09:20 | 显示全部楼层
文件名中“-”前后是否存在空格?
发表于 2021-9-2 10:57:04 | 显示全部楼层
回复 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. )
复制代码

评分

参与人数 1技术 +1 收起 理由
城外无诚 + 1 感谢分享

查看全部评分

 楼主| 发表于 2021-9-2 11:28:44 | 显示全部楼层
回复 12# Batcher


    可以用,非常感谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-21 00:41 , Processed in 0.034024 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表