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

[文件操作] 求助批处理文件整理,谢谢

[复制链接]
发表于 2021-10-10 16:02:38 | 显示全部楼层 |阅读模式
一个文件夹内有多个文件各个格式都有;
1、命名有规律以人名开头如:张三的体检表.xls,张三的报告.doc,李四的体检表.xls,李四的报告.doc等
2、要求自动建立张三,李四的文件夹,并把现有的文件移动到相应的文件夹

谢谢;

自己做了没有头绪;不知道怎么取文件名的前二,三个字,建立文件夹,欢迎提供帮助,功德无量谢谢。
发表于 2021-10-10 16:12:34 | 显示全部楼层
本帖最后由 qixiaobin0715 于 2021-10-10 18:49 编辑

回复 1# dengao
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for %%i in (*) do (
  4.     set str=%%i
  5.     set str=!str:的= !
  6.     if not "%%i"=="%~nx0" (
  7.     for /f %%a in ("!str!") do (
  8.         if not exist %%a md %%a
  9.         move "%%i" "%%a"
  10.     ))
  11. )
  12. pause
复制代码
发表于 2021-10-10 16:28:42 | 显示全部楼层
回复 1# dengao
开始代码有点小小问题,已修改。未测试。
 楼主| 发表于 2021-10-10 16:38:55 | 显示全部楼层
牛牛,完全可以感谢大佬出手;
 楼主| 发表于 2021-10-10 17:26:06 | 显示全部楼层
set str=!str:的= !
这里没看懂,我想建立,体检表或报告的文件夹该如何操作,不胜感激谢谢!
发表于 2021-10-10 18:43:47 | 显示全部楼层
本帖最后由 qixiaobin0715 于 2021-10-10 18:48 编辑

回复 5# dengao
就是将变量值中的“的”替换为空格。
两种需求合二为一:
  1. @echo off
  2. md 体检表,报告
  3. copy "*体检表*.*" "体检表"
  4. copy "*报告*.*" "报告"
  5. setlocal enabledelayedexpansion
  6. for %%i in (*) do (
  7.     set str=%%i
  8.     set str=!str:的= !
  9.     if not "%%i"=="%~nx0" (
  10.         for /f %%a in ("!str!") do (
  11.             if not exist %%a md %%a
  12.             move "%%i" "%%a"
  13.         )
  14.     )
  15. )
  16. pause
复制代码
 楼主| 发表于 2021-10-10 21:11:58 | 显示全部楼层
非常感谢您的回复,可以我表达的不清楚,如果文件名没有规律,我是想自动截取文件名中的任意关键字,比如取开头3个字,建立文件夹;并把文件移过去;该如何操作谢谢
发表于 2021-10-10 21:38:54 | 显示全部楼层
回复 7# dengao


参考set命令教程第8页
http://bbs.bathome.net/thread-31727-1-1.html
发表于 2021-10-10 21:42:22 | 显示全部楼层
回复 7# dengao
最好能找出规律,批处理本身就是要处理规律性的字符。如果强行截取前3个字符,就不一定是姓名,会显得怪怪的:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for %%i in (*) do if not "%%i"=="%~nx0" (
  4.     set "str=%%i"
  5.     set "str=!str:~,3!"
  6.     if not exist "!str!" md "!str!"
  7.     move "%%i" "!str!"
  8. )
  9. pause
复制代码
发表于 2021-10-14 21:04:42 | 显示全部楼层
本帖最后由 dos大帝 于 2021-10-14 21:09 编辑
  1. @echo off & setLocal enableDelayedExpansion & cd /d "%~dp0"

  2. goto comment
  3. 代码作用局限:
  4.     不能移动隐藏文件或者系统文件
  5.     不会移动子目录下的文件
  6.     若之前已有目录, 会覆盖目录下重名文件
  7.     关键字有中文存在,所以该代码保存为bat文件时得用GKB编码
  8. :comment

  9. rem 要截取的关键字, 可继续往后添加, 包含这些字段的文件都会移动, 若同时包含有多个关键字, 则按下面填写的顺序移动
  10. set key=张三 李四 王麻子

  11. for %%i in (%key%) do (
  12.     md "%%i"

  13.     for /f "delims=" %%j in ('dir /b /a-d-s-h') do (
  14.         echo "%%~nj" | find "%%i" > nul && set is=0

  15.         if !is!==0 (
  16.             move "%%~nxj" "%%i"
  17.         )

  18.         set is=1
  19.     )
  20. )

  21. pause
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-21 03:52 , Processed in 0.027926 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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