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

[文件操作] 求助批处理移动文件夹并命名,删除文件夹

[复制链接]
发表于 2024-9-4 15:20:26 | 显示全部楼层 |阅读模式
链接:https://pan.baidu.com/s/1NiVZA8NGSbrhSX89mJNY7Q
提取码:iy99

将文件夹下所有的的目录文件夹(包含里边图片)剪切出,放到指定文件夹下并以上几级文件夹组合命名。
将村级和户级文件夹删除,两文件夹内的图片或文件夹放一起。

表达的可能有点乱,其实不复杂,只是写不出来。。。
发表于 2024-9-4 16:08:13 | 显示全部楼层
备份好源文件,以免发生意外:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. md temp
  4. for /f "delims=" %%i in ('dir /s /ad /b 目录') do (
  5.     set "DI=%%i"
  6.     set "DI=!DI:*%cd%=!"
  7.     set "DI=temp\!DI:\=!"
  8.     md "!DI!"
  9.     move "%%i\*.*" "!DI!"
  10.     rd "%%i"
  11. )
  12. ren temp 目录
  13. for /f "delims=" %%i in ('dir /s /ad /b 村级 户级') do (
  14.     move "%%i\*.*" "%%i\.."
  15.     rd "%%i"
  16. )
  17. pause
复制代码
 楼主| 发表于 2024-9-4 16:23:24 | 显示全部楼层
回复 2# qixiaobin0715

提示两个找不到文件,新建了一个“鐩 綍”文件夹。
发表于 2024-9-4 16:26:06 | 显示全部楼层
将批处理文件保存为ANSI编码,放到原始文件夹下运行。
 楼主| 发表于 2024-9-4 16:33:57 | 显示全部楼层
回复 4# qixiaobin0715


    牛啊,大神。示例可以用了,我研究研究原理。
发表于 2024-9-4 17:01:47 | 显示全部楼层
本帖最后由 ppll2030 于 2024-9-4 17:19 编辑

回复 1# 455027852


    把代码保存为ANSI编码的bat文件
放在原始文件夹下,与各城市文件夹放一块。
运行即可得到结果。
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%i in ('dir /b /s /ad *目录') do (
  3.         set fd=%%i
  4.         md "目录" 2>nul
  5.         for %%d in ("!fd!\..") do set str=%%~pnxd&set str=!str:%~p0=!&set str=!str:\=!
  6.         move "%%i" ".\目录\!str!目录" >nul
  7. )

  8. for /f "delims=" %%i in ('dir /b /s /ad *村级 *户级') do (
  9.         set fd=%%i
  10.         for %%d in ("!fd!\..") do set "fdd=%%~dpnxd"
  11.         move "!fd!\*.png" "!fdd!" >nul
  12.         rd "%%i"
  13. )
  14. pause
复制代码
 楼主| 发表于 2024-9-4 17:58:34 | 显示全部楼层
回复 6# ppll2030


    如果村级,户级下面还有文件夹,该如何修改?
发表于 2024-9-4 19:04:32 | 显示全部楼层
本帖最后由 ppll2030 于 2024-9-4 19:09 编辑

回复 7# 455027852

想怎么改?要什么要的结果?

还是要连带下面的文件夹一起删除的话。就加个参数 /s /q 就可以了
发表于 2024-9-4 22:01:34 | 显示全部楼层
回复 7# 455027852


  1. @echo off
  2. rem 保存为ansi
  3. cd /d "%~dp0"
  4. for /d %%d in (*) do (
  5.         if "%%d" neq "目录" (
  6.                 for /d %%e in ("%%d\*") do (
  7.                         for /d %%f in ("%%e\*") do (
  8.                                 md "目录\%%d%%~nxe%%~nxf目录"
  9.                                 for /f "delims=" %%i in ('dir /b /s /a-d "%%f\目录"') do (
  10.                                         move "%%i" "目录\%%d%%~nxe%%~nxf目录"
  11.                                 )
  12.                                 for /f "delims=" %%i in ('dir /b /s /a-d "%%f"') do (
  13.                                         move "%%i" "%%f"
  14.                                 )
  15.                                 for /f "delims=" %%i in ('dir /b /s /ad "%%f" ^| sort /r') do (
  16.                                         rd "%%i"
  17.                                 )
  18.                         )
  19.                 )
  20.         )
  21. )
  22. pause
复制代码
 楼主| 发表于 2024-9-5 09:03:04 | 显示全部楼层
回复 8# ppll2030


    村级内含文件夹1,2,3户级内含文件夹4,5,6,保留文件夹1,2,3,4,5,6,仅删除村级户级这两个文件夹
发表于 2024-9-5 09:29:33 | 显示全部楼层
本帖最后由 qixiaobin0715 于 2024-9-5 09:50 编辑

回复 10# 455027852
表达不明确。1-6这些文件夹放在哪里呢?
只能猜猜看了,是这样?
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. md temp
  4. for /f "delims=" %%i in ('dir /s /ad /b 目录') do (
  5.     set "DI=%%i"
  6.     set "DI=!DI:*%cd%=!"
  7.     set "DI=temp\!DI:\=!"
  8.     md "!DI!"
  9.     move "%%i\*.*" "!DI!"
  10.     rd "%%i"
  11. )
  12. ren temp 目录
  13. for /f "delims=" %%i in ('dir /s /ad /b 村级 户级') do (
  14.     pushd "%%i"
  15.     for /f "delims=" %%j in ('dir /b /ad') do move "%%j" "%%i\.."
  16.     popd
  17.     move "%%i\*.*" "%%i\.."
  18.     rd "%%i"
  19. )
  20. pause
复制代码
发表于 2024-9-5 09:45:55 | 显示全部楼层
想到了某位大佬关于筐和球的比喻,筐倒是找到了,突然不知如何是好了。真所谓“拔剑四顾心茫然”。
发表于 2024-9-5 10:07:30 | 显示全部楼层
本帖最后由 ppll2030 于 2024-9-5 10:11 编辑

回复 10# 455027852


    要把123456文件夹都转移到上一级文件,然后删除 村级和户级文件夹。
把12行的 move 改为 xcopy /s /e
把13行的 rd 加上参数,改为 rd /s /q
即可。
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%i in ('dir /b /s /ad *目录') do (
  3.         set fd=%%i
  4.         md "目录" 2>nul
  5.         for %%d in ("!fd!\..") do set str=%%~pnxd&set str=!str:%~p0=!&set str=!str:\=!
  6.         move "%%i" ".\目录\!str!目录" >nul
  7. )

  8. for /f "delims=" %%i in ('dir /b /s /ad *村级 *户级') do (
  9.         set fd=%%i
  10.         for %%d in ("!fd!\..") do set "fdd=%%~dpnxd"
  11.         xcopy /s /e  "!fd!\*.*" "!fdd!" >nul
  12.         rd /s /q "%%i"
  13. )
  14. pause
复制代码
 楼主| 发表于 2024-9-5 10:47:43 | 显示全部楼层
回复 13# ppll2030


    可以了大神,我再自己研究研究。非常感谢。不再麻烦大神了。
 楼主| 发表于 2024-9-5 10:48:48 | 显示全部楼层
回复 12# qixiaobin0715


    可能权限问题,不能上传图片。语文不好,大神勿怪。不麻烦大神了,我自己改改大神代码试试。能力有限,感谢大神!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-17 22:07 , Processed in 0.023789 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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