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

[文件操作] 【已解决】批处理如何将遍历多个文件夹内,并按关键字移动都子文件的文件夹里面?

[复制链接]
发表于 2024-4-25 19:19:09 | 显示全部楼层 |阅读模式
本帖最后由 zhengzhenhui 于 2024-4-27 19:23 编辑
  1. @echo off
  2. for /f "tokens=*" %%a in ('dir/b 你好1*.*') do @(move "%%~a" ".\你好1")>nul
  3. for /f "tokens=*" %%a in ('dir/b 你好2*.*') do @(move "%%~a" ".\你好2")>nul
  4. for /f "tokens=*" %%a in ('dir/b 你好3*.*') do @(move "%%~a" ".\你好3")>nul
复制代码
这个是我现在用的当前文件夹,按关键字移动到对应名字文件夹内。
这个只是这样的文件夹有一百多个,怎么让这一百多个文件夹内的文件批量处理
举例 一级文件夹-------二级文件夹------三级文件夹
【属于是在二级文件夹内按关键字并移动文件到三级文件夹内】
【二级目录有很多个】
求大佬改一下

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2024-4-25 20:18:02 | 显示全部楼层
  1. @echo off
  2. rem 批处理保存为ansi编码格式
  3. cd /d "%~dp0"
  4. set f="关键字1" "关键字2" "关键字3"
  5. for /d %%d in (*) do (
  6.         for %%a in (%f%) do (
  7.                 if exist "%%d\%%~a*.*" (
  8.                         md "%%d\%%~a"
  9.                         move "%%d\%%~a*.*" "%%d\%%~a"
  10.                 )
  11.         )
  12. )
  13. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
zhengzhenhui + 1 谢谢

查看全部评分

 楼主| 发表于 2024-4-25 20:52:16 | 显示全部楼层
回复 2# 77七


    谢谢
发表于 2024-4-25 21:27:36 | 显示全部楼层
回复 1# zhengzhenhui
  1. @echo off
  2. cd /d "%~dp0"
  3. for /f "delims=" %%d in ('dir /b /a-d') do (
  4.     for %%a in ("关键字1" "关键字2" "关键字3") do (
  5.         if exist "%%d\%%~a*.*" (
  6.             md "%%d\%%~a"
  7.             move "%%d\%%~a*.*" "%%d\%%~a"
  8.         )
  9.     )
  10. )
复制代码
 楼主| 发表于 2024-4-26 02:19:26 | 显示全部楼层
回复 2# 77七


    您好,如果文件是在下一级代码改如何写,比如文件在三级文件夹,移动到四级文件夹,,
或者是四级文件夹,移动到五级文件夹
您看能不能多发几个示例,感激不尽
发表于 2024-4-26 09:28:05 | 显示全部楼层
回复 5# zhengzhenhui
  1. @echo off
  2. cd /d "%~dp0"
  3. for /f "delims=" %%a in ('dir /b /a-d') do (
  4.     echo 2级文件夹:%%a
  5.     for /f "delims=" %%b in ('dir /b /a-d') do (
  6.         echo ---3级文件夹:%%b
  7.         for %%i in ("关键字1" "关键字2" "关键字3") do (
  8.             if exist "%%a\%%b\%%~i*.*" (
  9.                 md "%%a\%%b\%%~i"
  10.                 move "%%a\%%b\%%~i*.*" "%%a\%%b\%%~i"
  11.             )
  12.         )
  13.     )
  14. )
复制代码
发表于 2024-4-26 10:30:24 | 显示全部楼层
楼主是想一次处理多项,比如移动二层到三层 and 移动三层到四层  两项都处理,或者只处理一项,比如 移动二层到三层或者移动三层到四层 两项只处理一项
发表于 2024-4-26 12:46:56 | 显示全部楼层
回复 5# zhengzhenhui


  
  1. @echo off
  2. rem 批处理保存为ansi编码格式
  3. rem n大于等于2
  4. set n=3
  5. set f="关键字1" "关键字2" "关键字3"
  6. for /l %%l in (2,1,%n%) do (
  7.         call set str=%%str%%\\.*
  8. )
  9. for /f "delims=" %%a in ('forfiles /s /c "cmd /c if @isdir==TRUE echo @relpath" ^|findstr /rc:"%str%" ^|findstr /rvc:"%str%\\.*" ') do (
  10.         for %%x in (%f%) do (
  11.                 if exist "%%~a\%%~x*.*" (
  12.                         md "%%~a\%%~x"
  13.                         move "%%~a\%%~x*.*" "%%~a\%%~x"
  14.                 )
  15.         )
  16. )
  17. pause
复制代码
 楼主| 发表于 2024-4-26 13:29:37 | 显示全部楼层
本帖最后由 zhengzhenhui 于 2024-4-26 13:34 编辑

回复 7# terse


    你好,每次处理文件位置是固定的,比如这次处理3级/4级文件夹,不会存在杂乱。
如果代码写的包含子文件内也是适用的,类似这一级关键字,下级文件夹名会出现匹配关键字,然后移入文件夹内
【可以理解为,处理当前多个文件夹下包含*你好*关键词移入当前层级*你好1*的文件夹内】
 楼主| 发表于 2024-4-26 13:48:59 | 显示全部楼层
回复 8# 77七


    n=3  是代表3级文件夹嘛
如果的包含全部下级文件夹,该如何写代码
发表于 2024-4-26 14:07:40 | 显示全部楼层
回复 10# zhengzhenhui


   自己试一下,不行就加减1。
2楼代码第5行改为:

  1. for /f "delims=" %%d in ('dir /b /s /ad') do (
复制代码
 楼主| 发表于 2024-4-26 14:57:35 | 显示全部楼层
回复 11# 77七


    2楼代码第5行改为:
用了之后,部分文件移动进去,还自己又在里面创建了一层文件夹放进去了
发表于 2024-4-26 15:24:29 | 显示全部楼层
回复 12# zhengzhenhui


   代码不要混用。对比执行前和执行后,代码有什么问题吗?
 楼主| 发表于 2024-4-26 15:59:17 | 显示全部楼层
回复 13# 77七


    2楼代码第5行改为:for /f "delims=" %%d in ('dir /b /s /ad') do (
就是文件是按对应名称移动进去,但是他会自己再创建一层文件夹再放进去
  1. @echo off
  2. rem 批处理保存为ansi编码格式
  3. cd /d "%~dp0"
  4. set f="关键字1" "关键字2" "关键字3"
  5. for /f "delims=" %%d in ('dir /b /s /ad') do (
  6.         for %%a in (%f%) do (
  7.                 if exist "%%d\%%~a*.*" (
  8.                         md "%%d\%%~a"
  9.                         move "%%d\%%~a*.*" "%%d\%%~a"
  10.                 )
  11.         )
  12. )
  13. pause
复制代码
发表于 2024-4-26 16:18:10 | 显示全部楼层
回复 14# zhengzhenhui


   
代码执行前 已经存在对应的文件夹,才会发生这种情况。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-18 02:46 , Processed in 0.022405 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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