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

[文件操作] 批处理怎样给文件夹前加上层文件夹名?

[复制链接]
发表于 2023-11-7 07:38:06 | 显示全部楼层 |阅读模式
在当前目录名为【测试】,下有一个名为【MP3】的文件夹,想在运行代码时,在【MP3】文件夹的文件名前加上当前目录名,改后为【测试MP3】。


说明:
1、只处理文件名为【MP3】的文件夹,对于文件夹名里包含MP3的文件夹不处理。
2、只插入【MP3】文件夹所在上层文件夹的文件名
3、支持子目录,多层目录遵循上述规则,同时处理。


辛苦了 谢谢
发表于 2023-11-7 08:31:39 | 显示全部楼层
  1. @echo off
  2. for /f "delims=" %%i in ('dir /ad /s /b^|findstr /ie "\\mp3"') do (
  3.      for %%j in ("%%~fi\..") do echo "%%~nj%%~ni"
  4. )
  5. pause
复制代码
发表于 2023-11-7 09:57:27 | 显示全部楼层
回复 1# qd2024


测试\MP3\MP3
这种情况需要怎么处理呢?
 楼主| 发表于 2023-11-7 11:33:47 | 显示全部楼层
回复 3# Batcher

感谢提醒,这种情况一般不会出现 ,如果就先处理就后一层目录里,如目录结构为1\2\3\4,先处理,按4、3、2、1顺序处理
最后的结果是
测试\测试MP3\MP3MP3


再如,如果目录结构为  测试\1MP3\2MP3\3MP3
BAT处理后的目录结构为  测试\测试1MP3\1MP32MP3\2MP33MP3

1MP3、2MP3、3MP3,只是为了说明问题,实际中不含前面的序号

辛苦,谢谢
 楼主| 发表于 2023-11-7 11:34:15 | 显示全部楼层
回复 2# terse


    我试试,辛苦了,感谢
发表于 2023-11-7 13:00:18 | 显示全部楼层
回复 5# qd2024
如果重命名的话,再排个序吧 修改为
  1. dir /ad /s /b^|findstr /ie "\\mp3"^|sort /r
复制代码
发表于 2023-11-7 17:46:09 | 显示全部楼层
目录结构:
测试\a\MP3\MP3\b\MP3\c

放在测试文件夹里运行的结果:
测试\a\aMP3\MP3MP3\b\bMP3\c

  1. @echo off

  2. set "name=mp3"
  3. set n=6144

  4. set m=%n%
  5. for /r /d %%i in (mp?) do (
  6. set p=%%i
  7. call set "_%%n%%=%%p%%"
  8. set /a n-=1
  9. )

  10. for /l %%i in (%n%,1,%m%) do (
  11. set vn=%%i
  12. call :aaa
  13. )

  14. echo,&pause&exit/b

  15. :aaa
  16. setlocal enabledelayedexpansion
  17. if /i "!_%vn%:~-4!" == "\!name!" (
  18. for /f "delims=" %%o in ("!_%vn%:~0,-4!") do set dadada=%%~no
  19. echo,&echo,rename "!_%vn%!" to "!dadada!!_%vn%:~-3!"
  20. rename "!_%vn%!" "!dadada!!_%vn%:~-3!"
  21. )
  22. endlocal
  23. goto :eof
复制代码
 楼主| 发表于 2023-11-17 06:55:11 | 显示全部楼层
回复 7# Five66


    感谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-18 08:57 , Processed in 0.019450 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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