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

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

链接:https://pan.baidu.com/s/1NiVZA8NGSbrhSX89mJNY7Q
提取码:iy99

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

表达的可能有点乱,其实不复杂,只是写不出来。。。

本帖最后由 77七 于 2024-9-5 12:10 编辑

上传图片可以用图床
  1. @echo off
  2. rem 保存为ansi
  3. cd /d "%~dp0"
  4. for %%a in ("目录" "村级" "户级") do (
  5. set _"%%~a"=1
  6. )
  7. for /d %%d in (*) do (
  8. if not defined _"%%d" (
  9. set str=%%d
  10. call :1 "%%d"
  11. )
  12. )
  13. pause
  14. exit
  15. :1
  16. for /d %%d in ("%~1\*") do (
  17. set str=%str%%%~nxd
  18. if defined _"%%~nxd" (
  19. robocopy "%%~dpd目录" "目录\%str%目录" /e /move
  20. robocopy "%%~dpd村级" "%%~dpd\" /e /move
  21. robocopy "%%~dpd户级" "%%~dpd\" /e /move
  22. exit /b
  23. ) else (
  24. call :1 "%%d"
  25. )
  26. )
  27. exit /b
复制代码
bat小白,请多指教!谢谢!

TOP

有感而发,自说自话。不要会错意啊!

TOP

回复 12# qixiaobin0715


    可能权限问题,不能上传图片。语文不好,大神勿怪。不麻烦大神了,我自己改改大神代码试试。能力有限,感谢大神!!

TOP

回复 13# ppll2030


    可以了大神,我再自己研究研究。非常感谢。不再麻烦大神了。

TOP

本帖最后由 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
复制代码

TOP

想到了某位大佬关于筐和球的比喻,筐倒是找到了,突然不知如何是好了。真所谓“拔剑四顾心茫然”。

TOP

本帖最后由 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
复制代码

TOP

回复 8# ppll2030


    村级内含文件夹1,2,3户级内含文件夹4,5,6,保留文件夹1,2,3,4,5,6,仅删除村级户级这两个文件夹

TOP

回复 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
复制代码
bat小白,请多指教!谢谢!

TOP

本帖最后由 ppll2030 于 2024-9-4 19:09 编辑

回复 7# 455027852

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

还是要连带下面的文件夹一起删除的话。就加个参数 /s /q 就可以了

TOP

回复 6# ppll2030


    如果村级,户级下面还有文件夹,该如何修改?

TOP

本帖最后由 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
复制代码

TOP

回复 4# qixiaobin0715


    牛啊,大神。示例可以用了,我研究研究原理。

TOP

将批处理文件保存为ANSI编码,放到原始文件夹下运行。

TOP

返回列表