Board logo

标题: [文件操作] [已解决]批处理可以做拆分文件夹吗? [打印本页]

作者: tttoi2000    时间: 2023-7-18 21:42     标题: [已解决]批处理可以做拆分文件夹吗?

有一堆文件夹
1-2019-JX14-Y-002
1-2019-JX0313-Y-003。。。。有上千个

想把单层文件夹个拆成多层文件夹

未拆前  
       1-2019-JX14-Y-002
        |_1-2019-JX14-Y-002.001.pdf~1-2019-JX14-Y-002.999.pdf
拆分后
       1
        |_2019
           |_JX14
              |_Y
                 |_002
                    |_1-2019-JX14-Y-002.001.pdf~1-2019-JX14-Y-002.999.pdf
求助各侠
作者: 77七    时间: 2023-7-18 22:44

本帖最后由 77七 于 2023-7-19 10:52 编辑
  1. @echo off
  2. for /d %%d in (*-*) do (
  3.         set "str=%%d"
  4.         setlocal enabledelayedexpansion
  5.         robocopy "!str!" "!str:-=\!" /move /e
  6.         endlocal
  7. )
  8. pause
复制代码

使用前先测试!!!

作者: hnfeng    时间: 2023-7-19 08:28

使用前先测试!!!
77七 发表于 2023-7-18 22:44



    robocopy 的 move …… 好像是先复制再删除的,如果要处理的文件量较大,不建议用 robocopy
作者: qixiaobin0715    时间: 2023-7-19 08:43

本帖最后由 qixiaobin0715 于 2023-7-19 09:31 编辑

运行代码前请备份好源文件,以免发生意外。代码放在主文件夹中:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "tokens=1-5 delims=-" %%i in ('dir /b /ad') do (
  4.     set "NewFolder=%%i\%%j\%%k\%%l\%%m"
  5.     md "!NewFolder!"
  6.     move "%%i-%%j-%%k-%%l-%%m\*.pdf" "!NewFolder!\"
  7.     rd "%%i-%%j-%%k-%%l-%%m"
  8. )
复制代码

作者: 77七    时间: 2023-7-19 09:32

回复 3# hnfeng


  谢谢老师指点!本来我考虑更多的兼容一些情况,比如文件夹下存在子文件夹等,却没想到robocopy /move 这个是复制再删除,这个就太影响效率了!学习了,以后慎用!
作者: Batcher    时间: 2023-7-19 10:02

回复 5# 77七


    复制再删除是最安全的方式,建议优先选用robocopy方案,由于自带并发操作所以效率也很高。
作者: 77七    时间: 2023-7-19 10:51

回复 6# Batcher


   
谢谢站长指点!robocopy安全、高效,学习了!
作者: tttoi2000    时间: 2023-7-19 22:13

感谢各位大侠帮忙,两个都好用,谢谢。
作者: tttoi2000    时间: 2023-7-21 22:02

我觉得第一个要好用些,多一个,少一个,都可以不管,实测的。
作者: luckcsz    时间: 2023-8-28 21:33

本帖最后由 luckcsz 于 2023-8-28 21:40 编辑

回复 4# qixiaobin0715


    文件夹下文件tif格式未跟随最后级文件夹~!
大概是文件夹名称分割-段关系。




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