[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

本帖最后由 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
复制代码
这个是我现在用的当前文件夹,按关键字移动到对应名字文件夹内。
这个只是这样的文件夹有一百多个,怎么让这一百多个文件夹内的文件批量处理
举例 一级文件夹-------二级文件夹------三级文件夹
【属于是在二级文件夹内按关键字并移动文件到三级文件夹内】
【二级目录有很多个】
求大佬改一下
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

回复 21# zhengzhenhui


  
  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
复制代码
1

评分人数

bat小白,请多指教!谢谢!

TOP

回复 20# 77七


    我是想这样子的, 关键字【你好-欢迎】
然后创建文件夹【欢迎】把【你好-欢迎】文件移动进去
                 ↓ ↓ ↓ ↓ ↓
(欢迎)这个在【你好-欢迎】里面是识别不到

TOP

回复 19# zhengzhenhui


   
如果既存在 关键字【你好】,又存在【你好-欢迎】,把后者放到前面
  1. set f="你好-欢迎" "你好"
复制代码
bat小白,请多指教!谢谢!

TOP

回复 17# 77七


    加【-】的后面的字识别不到,,,
是不是不能加这个    -      字符
比如     你好-欢迎-文件     这个文件名  他只能识别到(你好)这个然后移动呢到文件夹

TOP

回复 15# 77七


    不好意思,懂这个代码意思了,就是文件夹不需要自己创建,他会自己创建放入

TOP

回复 16# zhengzhenhui


  
【你好1】-文件和【你好】-文件夹   都是在一层的
【你好1】 已经存在对应的【你好】文件夹了,所以出现这种情况。
bat小白,请多指教!谢谢!

TOP

回复 15# 77七


    我检查过了,文件都没有放到文件夹的,处于待处理状态
比如 【你好1】-文件和【你好】-文件夹   都是在一层的
      点完之后是有挪动到文件夹内,但是会多建立一层文件夹放入
       文件夹------    你好文件夹----------- 你好文件夹
                                ↓                               ↓
                        应该是放这个文件夹       代码又多创建了一层文件夹放入了

TOP

回复 14# zhengzhenhui


   
代码执行前 已经存在对应的文件夹,才会发生这种情况。
bat小白,请多指教!谢谢!

TOP

回复 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
复制代码

TOP

回复 12# zhengzhenhui


   代码不要混用。对比执行前和执行后,代码有什么问题吗?
bat小白,请多指教!谢谢!

TOP

回复 11# 77七


    2楼代码第5行改为:
用了之后,部分文件移动进去,还自己又在里面创建了一层文件夹放进去了

TOP

回复 10# zhengzhenhui


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

  1. for /f "delims=" %%d in ('dir /b /s /ad') do (
复制代码
bat小白,请多指教!谢谢!

TOP

回复 8# 77七


    n=3  是代表3级文件夹嘛
如果的包含全部下级文件夹,该如何写代码

TOP

本帖最后由 zhengzhenhui 于 2024-4-26 13:34 编辑

回复 7# terse


    你好,每次处理文件位置是固定的,比如这次处理3级/4级文件夹,不会存在杂乱。
如果代码写的包含子文件内也是适用的,类似这一级关键字,下级文件夹名会出现匹配关键字,然后移入文件夹内
【可以理解为,处理当前多个文件夹下包含*你好*关键词移入当前层级*你好1*的文件夹内】

TOP

返回列表